在处理过程中,我定义了以下类:
class SomeClass {
SomeClass(int[] someArray) {
println(someArray);
}
}
现在我想创建该类的实例,但是我无法将数组传递给构造函数:
SomeClass myVar = new SomeClass({
12, 10
});
但这总是给我一个错误"意外的令牌:{"。所以显然定义了阵列"在飞行中"不起作用。
然而,这将有效:
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}
,这肯定不是我打算做的。
所以我的问题是:如何正确地将数组传递给类的构造函数而不必在之前声明数组?它甚至可能吗?
感谢您的回答!
答案 0 :(得分:6)
在发送之前,你还需要以某种方式定义它...试试这个:
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);
阵列很有趣!!