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

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

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

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

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

但这总是给我一个错误“意外的令牌:{”。 显然,“动态”定义arrays是行不通的。

但是,这将有效:

 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); 

arrays很有趣!!