作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一些枚举,它有 getDescription()
方法:
public enum Test {
QWE ("qwe"),
ASD ("asd"),
ZXC ("zxc");
private final String description;
Test(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
public enum Test1 {
RTY("rty");
private final String description;
Test1(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
是否可以创建一些抽象的枚举或一些接口(interface),可以这样写?
public void outputDescriptions(AbstractEnumType abstractEnumType) {
for(Enum enum: abstractEnumType.values()) {
System.out.println(enum.getDescription());
}
}
outputDescriptions(Test)
的输出
qwe
asd
zxc
最佳答案
您不能从抽象基类派生枚举,但枚举可以实现接口(interface)。以下将是您的问题的解决方案:
您创建一个接口(interface) Descriptable
public interface Descriptable {
public String getDescription();
}
并让你所有的枚举实现这个接口(interface):
public enum Test implements Descriptable {
然后像这样写输出函数:
public <T extends Enum<T> & Descriptable> void outputDescriptions(Class<T> tclass) {
for(T t: tclass.getEnumConstants())
System.out.println(t.getDescription());
}
关于java - 创建抽象枚举的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33477039/
我是一名优秀的程序员,十分优秀!