public enum AgeGroup {
CHILD{
public int get(){
return 10;
}
},
TEEN, YOUNG, MID, OLD;
}
我有一个枚举AgeGroup
,您看到CHILD
有一种方法get()
。有人可以告诉我为什么我们不能从get()
致电CHILD
这背后的设计方法是什么,或者为什么这样设计?
答案 0 :(得分:4)
首先,枚举的所有实例都是相同类型,这意味着所有实例都具有相同的方法。
您需要在枚举类型本身上声明一个方法,以便实例具有方法:
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
}
}
答案 1 :(得分:1)
Javadoc说:“枚举声明定义了一个类(称为枚举类型)。” 因此,基本上你可以在枚举声明中包含一些方法,但是将为枚举的所有元素定义方法。 在这里查看Planet示例:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html 你所写的内容不符合类(或枚举)的有效声明,因为你试图只为枚举的一个元素声明一个函数。