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