java - 将数组传递给构造函数而不声明它?

标签 java arrays processing

在处理中,我定义了以下类:

class SomeClass {
    SomeClass(int[] someArray) {
        println(someArray);
    }
}

现在我想创建该类的一个实例,但是我无法将数组传递给构造函数:

SomeClass myVar = new SomeClass({
    12, 10
});

但这总是给我一个错误“unexpected token: {”。所以显然“即时”定义数组是行不通的。

但是,这会起作用:

int[] dummy = {12, 10};

SomeClass myVar = new SomeClass(dummy);

但是我觉得在对象之外声明这个数组是相当愚蠢的,因为这会在创建多个对象时导致各种麻烦:

int[] dummy = {12, 10};
SomeClass myVar = new SomeClass(dummy);

dummy = {0, 100};
SomeClass myVar2 = new SomeClass(dummy);

该类的两个实例现在都引用了同一个数组 {0, 100},这当然不是我想要做的。

所以我的问题是:如何在不必事先声明数组的情况下将数组正确地传递给类的构造函数?有可能吗?

感谢您的回答!

最佳答案

在发送之前你仍然需要以某种方式定义它......试试这个:

SomeClass myVar = new SomeClass(new int [] {
    12, 10
});

或者您可以尝试一些 Java 的语法糖...

class SomeClass {
    SomeClass(int... someArray) {
        println(someArray);
    }
}
SomeClass myVar = new SomeClass(12, 10);

这会给你的编码风格带来一些限制......例如你可以这样做:(特殊语法作为最后一个元素)

class SomeClass {
    SomeClass(String someString, float someFloat, int... someArray) {
        println(someString);
        println(someFloat);
        println(someArray);
    }
}
SomeClass myVar = new SomeClass("lol",3.14, 12, 10);

但不是这个:(特殊语法不是最后一个元素)

class SomeClass {
    SomeClass(String someString, int... someArray, float someFloat) {
        println(someString);
        println(someFloat);
        println(someArray);
    }
}
SomeClass myVar = new SomeClass("lol", 12, 10,3.14);

数组很有趣!!

关于java - 将数组传递给构造函数而不声明它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18482953/

相关文章:

java - 谷歌云存储文件的追加操作

java - 使用 Fabric8 关闭 Kubernetes 客户端

java - RecyclerView Adapter - 只有创建 View 层次结构的原始线程才能触摸其 View

arrays - 从值数组中删除对重复项

javascript - 切片二维字符串数组

javascript - 删除所选之前数组中的所有元素

java - 像使用 C++ 迭代器一样使用 java 迭代器

python - 从 numpy 结构化数组中的数据打印行

java - 是否可以编写逻辑形式 "then if"的条件?

java/三角函数/数学。 3 空间中立方体的相对轴,处理库(bug?)