Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 枚举反射_Java_Reflection - Fatal编程技术网

Java 枚举反射

Java 枚举反射,java,reflection,Java,Reflection,我有4个几乎相同的函数,我想在其中重构它们。我想使用reflexy,但我不明白如何使用reflexy初始化EnumMap。 类似以下函数的代码: private void loadRealEstateValues() { realEstateValues = new EnumMap<RealEstateType, String>(RealEstateType.class); for (RealEstateType r : RealEstateType.values()

我有4个几乎相同的函数,我想在其中重构它们。我想使用reflexy,但我不明白如何使用reflexy初始化EnumMap。 类似以下函数的代码:

private void loadRealEstateValues() {
    realEstateValues = new EnumMap<RealEstateType, String>(RealEstateType.class);
    for (RealEstateType r : RealEstateType.values()) {
        realEstateValues.put(r, ResUtils.getStringByName(context,
                String.format("%s_%s", getParserPrefix(), r.toString().toLowerCase())));
    }
}

private void loadPeriodValues() {
    periodValues = new EnumMap<PeriodType, String>(PeriodType.class);
    for (PeriodType p : PeriodType.values()) {
        periodValues.put(p, ResUtils.getStringByName(context,
                String.format("%s_%s", getParserPrefix(), p.toString().toLowerCase())));
    }
}
private void loadRealEstateValues(){
realEstateValues=新的EnumMap(RealEstateType.class);
对于(RealEstateType r:RealEstateType.values()){
realEstateValues.put(r,ResUtils.getStringByName(上下文,
String.format(“%s_%s”,getParserPrefix(),r.toString().toLowerCase());
}
}
私有void loadPeriodValues(){
periodValues=新的枚举映射(PeriodType.class);
对于(PeriodType p:PeriodType.values()){
periodValues.put(p,ResUtils.getStringByName(context,
格式(“%s_%s”,getParserPrefix(),p.toString().toLowerCase());
}
}
我发现这样的价值观,也许是更好的方法

    Class<?> c= TestEnum.class;
    testEnumMap = new EnumMap<TestEnum, String>(TestEnum.class);

    for(Object m : c.getEnumConstants()){
        testEnumMap.put((TestEnum) m, "bla bla blah");
    }
Class c=TestEnum.Class;
testEnumMap=新的枚举映射(TestEnum.class);
对于(对象m:c.getEnumConstants()){
testEnumMap.put((TestEnum)m,“blablablablah”);
}
使用通用方法:

private <T extends Enum<T>> EnumMap<T, String> loadEnumValues(Class<T> enumClass) {
    EnumMap<T, String> map = new EnumMap<T, String>(enumClass);
    for (T t : enumClass.getEnumConstants()) {
        map.put(t, ResUtils.getStringByName(context,
                String.format("%s_%s", getParserPrefix(), t.toString().toLowerCase())));
    }
    return map;
}
私有EnumMap loadEnumValues(类enumClass){
EnumMap map=新的EnumMap(enumClass);
对于(T:enumClass.getEnumConstants()){
map.put(t,ResUtils.getStringByName(context,
String.format(“%s_%s”,getParserPrefix(),t.toString().toLowerCase());
}
返回图;
}