Java - 将数组直接传递给构造函数,而不是作为变量传递

时间:2015-11-29 11:03:49

标签: java arrays constructor arguments

我们来看下面的例子:

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[] {...}语句?

如果有人知道在标题中制定此方法的更好方法,请随时改进。

2 个答案:

答案 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");