[英]Enum constructor takes in more parameters than specified
我有以下代码,我试图了解它的作用
public enum ExampleClass {
INSTANCE("nothing"),
ITEM;
private String description;
private ExampleClass(String description) {
this.description = description;
}
static{
ITEM = new ExampleClass("ITEM", 1, "this is an item");
}
}
我的问题是:
ExampleClass
是一个enum
。 INSTANCE
和ITEM
是此ExampleClass
2 个实例(称为枚举常量)。 例如,这将是有效的:
public enum ExampleClass {
INSTANCE,
ITEM;
}
也就是说,您可以为枚举定义自己的构造函数,如下所示:
private ExampleClass(String description) {
this.description = description;
}
与类相同,如果您定义自定义构造函数,JVM 将不会创建默认构造函数。
INSTANCE("nothing")
将使用您的自定义构造函数实例化。ITEM
无效,因为没有“无参数”构造函数。这将是有效的:
public enum ExampleClass {
INSTANCE("nothing"),
ITEM;
private String description;
//Will be used to instantiate INSTANCE("nothing")
private ExampleClass(String description) {
this.description = description;
}
//Will be used to instantiate ITEM
private ExampleClass() {
}
}
new ExampleClass("ITEM", 1, "this is an item");
更糟糕的是:您不能使用new
实例化枚举。 每个枚举文字只能存在一个实例,它们由 JVM 本身处理。即使可能,也没有带有 3 个参数的构造函数,因此它仍然无法编译
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.