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

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

如果有人知道在标题中表述这一点的更好方法,请随时改进它。

最佳答案

如前所述,这就是在一般情况下创建数组文字的方式。

您可以将数组替换为 int... array varargs 参数,但随后您需要将其作为最后一个参数。

Dummy(int someNumber, String message, int... someArray) {}
new Dummy(1, "Hello", 1, 2, 5);

关于Java - 将数组直接传递到构造函数中,而不是作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33982047/

相关文章:

javascript - 基于用户选择的数组与 Raphael、jQuery/JavaScript 的交集

java - 在 Java 中同时调用默认构造函数和 super 构造函数

java - 如何通过 Java 将标记添加到 XML 的序言

java - 更新到新的intellij IDEA后Builder插件异常

java - colver中的 'true branch executed'和 'branch executed'有什么不同?

javascript - 从函数返回多个值

java - 无法在我的系统中配置 Struts

java - Android Collection ,我应该使用哪个?

c++ - 当默认构造函数充当默认参数时,它是如何工作的?

python - Django 忽略构建模型时的额外参数