为什么我收到错误"构造函数未定义"它是在我的eclipse IDE中吗? 我的代码有问题吗?
public enum EnumHSClass {
PALADIN ("Paladin"),ROUGE("ROUGE");
}
答案 0 :(得分:12)
如果您希望枚举具有参数,则需要为这些参数声明构造函数和字段。
public enum EnumHSClass {
PALADIN ("Paladin"),ROUGE("ROUGE");
private final String name;
private EnumHSClass(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
答案 1 :(得分:4)
您需要在枚举中提供constructor
,如:
public enum EnumHSClass {
PALADIN("Paladin"), ROUGE("ROUGE");
String value;
EnumHSClass(String value) {
this.value = value;
}
}
注意:枚举类型的构造函数必须是package-private或 私人访问。它会自动创建常量 在枚举体的开头定义。你不能调用枚举 构建者自己。
参考:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
答案 2 :(得分:2)
枚举也有构造函数,但只有私有或默认可见性:
public enum EnumHSClass {
PALADIN ("Paladin"),ROUGE("ROUGE");
private EnumHSClass(String s) {
// do something with s
}
}
您可能需要声明一个字段并为其创建一个getter,并在构造函数中设置该字段。
另请注意,enum实例的名称可通过所有枚举所具有的(隐式)name()
方法免费获得 - 也许您可以使用它。
答案 3 :(得分:1)
您的代码应如下所示:
public enum EnumHSClass {
PALADIN ("Paladin"), ROUGE("ROUGE");
private String name;
private EnumHSClass(String name) {
this.name = name;
}
}
答案 4 :(得分:1)
public enum Days {
MONDAY(1), TUESDAY(2);
int val;
Days (int val) {
this.val = val;
}
}