Ale*_*lls 23 java generics enums
帮我理解泛型.假设我有两个枚举作为内部类,如下所示:
public class FoodConstants {
public static enum Vegetable {
POTATO,BROCCOLI,SQUASH,CARROT;
}
public static enum Fruit {
APPLE,MANGO,BANANA,GUAVA;
}
}
Run Code Online (Sandbox Code Playgroud)
不是让两个枚举实现接口,而是必须两次实现相同的方法,我希望在外部类中有一个方法,它可以执行以下操作:
public <e> String getEnumString<Enum<?> e, String s) {
for(Enum en: e.values()) {
if(en.name().equalsIgnoreCase(s)) {
return s;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但是这种方法不能编译.我想要做的是找出一个字符串值是否是枚举值的名称,在任何枚举中,是否是蔬菜,水果,什么不是.无论这实际上是否是一种冗余方法,我试图(重新)编写的那个有什么问题?
基本上我想这样做:
public class FoodConstants {
public static enum Vegetable {
POTATO,BROCCOLI,SQUASH,CARROT;
}
public static enum Fruit {
APPLE,MANGO,BANANA,GUAVA;
}
public <e> String getEnumString<Enum<?> e, String s) {
for(Enum en: e.values()) {
if(en.name().equalsIgnoreCase(s)) {
return s;
}
}
return null;
}
} //end of code
Run Code Online (Sandbox Code Playgroud)
Mik*_*uel 56
public static <E extends Enum<E>>
String getEnumString(Class<E> clazz, String s){
for(E en : EnumSet.allOf(clazz)){
if(en.name().equalsIgnoreCase(s)){
return en.name();
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
原版有一些问题:
Enum.valueOf(String).EnumSet为你做所有反光的东西.| 归档时间: |
|
| 查看次数: |
21086 次 |
| 最近记录: |