使用泛型将枚举转换为HashMap的java方法

使用泛型将枚举转换为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

我试图抽象一个方法,该方法从枚举中加载带有整型字符串值的静态hashmap。我的具体方法如下所示

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
是自参考?您是否将
枚举
枚举
混淆?您拥有的类似于声明