[英]Java Enum Constructor Undefined
為什么我收到錯誤“構造函數未定義”是否在我的eclipse IDE中? 我的代碼有問題嗎?
public enum EnumHSClass {
PALADIN ("Paladin"),ROUGE("ROUGE");
}
如果您希望枚舉具有參數,則需要為這些參數聲明構造函數和字段。
public enum EnumHSClass {
PALADIN ("Paladin"),ROUGE("ROUGE");
private final String name;
private EnumHSClass(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
你需要在你的枚舉中提供一個constructor
,如:
public enum EnumHSClass {
PALADIN("Paladin"), ROUGE("ROUGE");
String value;
EnumHSClass(String value) {
this.value = value;
}
}
注意:枚舉類型的構造函數必須是包私有或私有訪問。 它會自動創建在枚舉主體開頭定義的常量。 您不能自己調用枚舉構造函數。
參考: http : //docs.oracle.com/javase/tutorial/java/javaOO/enum.html
枚舉也有構造函數,但只有私有或默認可見性:
public enum EnumHSClass {
PALADIN ("Paladin"),ROUGE("ROUGE");
private EnumHSClass(String s) {
// do something with s
}
}
您可能希望聲明一個字段並為其創建一個getter,並在構造函數中設置該字段。
另請注意,枚舉實例的名稱可通過所有枚舉所具有的(隱式) name()
方法免費獲得 - 也許您可以使用它。
您的代碼應如下所示:
public enum EnumHSClass {
PALADIN ("Paladin"), ROUGE("ROUGE");
private String name;
private EnumHSClass(String name) {
this.name = name;
}
}
public enum Days {
MONDAY(1), TUESDAY(2);
int val;
Days (int val) {
this.val = val;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.