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

2023-11-24

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

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}这当然不是我想要做的。

所以我的问题是:如何正确地将数组传递给类的构造函数,而无需事先声明数组?有可能吗?

谢谢您的回答!


在发送之前,您仍然需要以某种方式定义它...尝试以下操作:

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

数组很有趣!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数组传递给构造函数而不声明它? 的相关文章

随机推荐