我们来看下面的例子:
public class Test {
public void main(String[] args) {
int[] someInts = {1, 2, 5};
new Dummy(1, someInts, "Hello"); //works
new Dummy(1, new int[] {1, 2, 5}, "Hello"); //works
new Dummy(1, {1, 2, 5}, "Hello"); //fails
new Dummy(1, [1, 2, 5], "Hello"); //fails
}
public class Dummy {
Dummy(int someNumber, int[] someArray, String message) {
}
}
}
对于两个失败的行,Eclipse说:“构造函数Test.Dummy(int,int,int,int,String)未定义”
首先,我不明白为什么它不能将数组识别为数组(仅在失败的行中)。
其次,为什么我不能将数组直接传递给构造函数,而是必须创建一个传递它的变量?
第三,有没有办法创建一个构造函数,它采用类似于那条线的东西,这意味着没有变量或new int[] {...}
语句?
如果有人知道在标题中制定此方法的更好方法,请随时改进。
答案 0 :(得分:1)
如上所述,这是在一般情况下创建数组文字的方式。
您可以使用int... array
varargs参数替换该数组,但是您需要将其作为最后一个参数。
Dummy(int someNumber, String message, int... someArray) {}
new Dummy(1, "Hello", 1, 2, 5);
答案 1 :(得分:0)
new Dummy(1, {1, 2, 5}, "Hello");
,您只能使用{}
语法进行数组初始化。使用new Dummy(1,new int[] {1, 2, 5}, "Hello");