使用泛型将枚举转换为HashMap的java方法
我试图抽象一个方法,该方法从枚举中加载带有整型字符串值的静态hashmap。我的具体方法如下所示使用泛型将枚举转换为HashMap的java方法,java,generics,hashmap,enumeration,using,Java,Generics,Hashmap,Enumeration,Using,我试图抽象一个方法,该方法从枚举中加载带有整型字符串值的静态hashmap。我的具体方法如下所示 public static Map<Integer, String> myMap = new HashMap<Integer, String>; static{ Enumeration<MyEnum> enumTokens = MyEnum.getTokens(); //returns an enumeration of 'MyEnum' //li
public static Map<Integer, String> myMap = new HashMap<Integer, String>;
static{
Enumeration<MyEnum> enumTokens = MyEnum.getTokens(); //returns an enumeration of 'MyEnum'
//like to abstract the following into a method
while (enumTokens.hasMoreElements()){
MyEnum element = (MyEnum) enumTokens.nextElement();
myMap.put(element.intValue(), element.toString());
}
}
publicstaticmap myMap=newhashmap;
静止的{
Enumeration enumTokens=MyEnum.getTokens();//返回“MyEnum”的枚举
//希望将以下内容抽象为一个方法
while(enumTokens.hasMoreElements()){
MyEnum元素=(MyEnum)enumTokens.nextElement();
myMap.put(element.intValue(),element.toString());
}
}
这里有一个通用方法可以帮您完成这项工作
请注意,您尚未说明intValue()
的意义,因此我为其创建了一个接口
interface HasIntValue {
int intValue();
}
public static <E extends Enumeration<E> & HasIntValue> Map<Integer, String> convertToMap(E e) {
Map<Integer, String> map = new HashMap<Integer, String>();
while (e.hasMoreElements()){
E element = e.nextElement();
map.put(element.intValue(), element.toString());
}
return map;
}
接口HasIntValue{
int值();
}
公共静态映射转换映射(E){
Map Map=newhashmap();
而(e.hasMoreElements()){
E元素=E.nextElement();
put(element.intValue(),element.toString());
}
返回图;
}
注意允许类型绑定到
枚举
和HasIntValue
的语法,您的问题是?这甚至不是一个方法……我认为将静态块与抽象方法混合使用不是一个好主意。请显示MyEnum
的源代码,以及足够的上下文,以便我们能够理解您的问题。您有什么问题?您面临的确切问题是什么?为什么E
是自参考?您是否将枚举
与枚举
混淆?您拥有的类似于声明
。