作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
public enum AgeGroup {
CHILD{
public int get(){
return 10;
}
},
TEEN, YOUNG, MID, OLD;
}
我有一个枚举 AgeGroup
,如您所见,CHILD
有一个方法 get()
。有人能告诉我为什么我们不能从 CHILD
调用 get()
这背后的设计方法是什么或者为什么要这样设计?
最佳答案
首先,枚举的所有实例都是相同类型,这意味着所有实例都具有相同的方法集。
您需要在枚举类型本身上声明一个方法,以便实例拥有一个方法:
public enum AgeGroup {
CHILD{
public int get(){
return 10;
}
},
TEEN, YOUNG, MID, OLD;
public int get() {
return 0;
}
}
如果所有实例都像 CHILD
那样覆盖了 get()
方法,您可以将该方法声明为 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
}
}
关于java - 枚举上的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19485111/
我是一名优秀的程序员,十分优秀!