![](/img/trans.png)
[英]How does one declare a static array of custom data type with hard-coded values?
[英]Passing Hard-coded Array Values to Constructor
有没有一种方法可以指定一个接受数组的构造函数,然后将该数组的预定义值列表直接传递给该构造函数。
这是一个例子:
假设您有一个名为Unit的枚举 。
public enum Unit {
PROBE (null),
STALKER (null);
private final String[] require;
Unit(String[] require) {
this.require = require;
}
public String[] require() { return require; }
}
上面的以下代码有效,但是如果我想用值列表替换空值怎么办?
例如,这是我想做的,但是它是无效的:
public enum Unit {
PROBE (null),
STALKER ({"cybernetics core"});
private final String[] require;
Unit(String[] require) {
this.require = require;
}
public String[] require() { return require; }
}
这次,在上面的示例中,我试图将一个数组元素值传递给构造函数。 我意识到我可以指定一个数组来存储此值,例如String[] stalker = {"cybernetics core"};
但是考虑到在我的整个项目中,我需要在此处输入不同的数组值,所以我在寻找一种更优雅的方法。 在那儿?
您可以使用常规数组构造函数:
STALKER(new String[] { "value1", "value2" });
您的String
数组初始化将不会这样编译。
只需替换:
STALKER ({"cybernetics core"});
与
STALKER (new String[]{"cybernetics core"});
除了使用数组构造函数new String[] {}
您还可以将varargs用于Enum-Constructor:
public enum Unit {
PROBE (),
STALKER ("cybernetics core");
private final String[] requirements;
Unit(String... requirements) {
this.requirements = requirements;
}
public String[] requirements() { return requirements; }
}
在幕后,Java为varargs创建了一个数组,但是更易于阅读代码。 但是请注意,空参数会导致空数组,类似于new String[0]
。 在许多情况下,空数组是好得多的处理比null
,你不要在你的代码需要零检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.