public enum AgeGroup {
CHILD{
public int get(){
return 10;
}
},
TEEN, YOUNG, MID, OLD;
}
調用方法我有一個枚舉AgeGroup
,正如你所看到的是CHILD
有一個方法get()
。有人可以告訴我爲什麼我們不能撥打get()
CHILD
背後的設計方法是什麼?爲什麼它是這樣設計的?上枚舉
public enum AgeGroup {
CHILD{
public int get(){
return 10;
}
},
TEEN, YOUNG, MID, OLD;
}
調用方法我有一個枚舉AgeGroup
,正如你所看到的是CHILD
有一個方法get()
。有人可以告訴我爲什麼我們不能撥打get()
CHILD
背後的設計方法是什麼?爲什麼它是這樣設計的?上枚舉
首先,枚舉的所有實例都是相同類型,這意味着所有實例具有的方法同一組的。
您需要聲明的枚舉類型本身的實例的方法有一種方法:
public enum AgeGroup {
CHILD{
public int get(){
return 10;
}
},
TEEN, YOUNG, MID, OLD;
public int get() {
return 0;
}
}
如果所有情況下推翻了get()
方法CHILD
了,你可以聲明的方法abstract
,哪支部隊編碼器在添加新實例時實現該方法。
最好的方法是使用一個final
場,通過自定義構造函數初始化,與getter:
public enum AgeGroup {
CHILD{10), TEEN(19), YOUNG(35), MID(50), OLD(80);
private final int age;
AgeGroup(int age) {
this.age = age;
}
public int get() {
return
}
}
Javadoc說:「枚舉聲明定義了一個類(稱爲枚舉類型)。」 因此,基本上你可以在枚舉聲明中包含一些方法,但是將爲枚舉的所有元素定義方法。 檢查星球示例:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html 由於您試圖爲枚舉的一個元素聲明函數,因此您寫入的內容不符合類(或枚舉)的有效聲明。
是的,雖然它不是一個有效的枚舉聲明,它編譯。糾正我,如果我錯了,但我認爲這是不合邏輯的,我的意思是這種行爲是爲枚舉實施的方式。 –
我有同樣的問題。我發現很奇怪,可以在你的例子中定義一個特定的枚舉類型的方法,但是沒有辦法調用它。我的意思是代碼編譯,但不能像調用其他枚舉定義「默認」方法那樣調用該方法。 –