通过反射获取枚举的值
我有一个这样声明的枚举:
public enum Mode{ RUNNING("SytemRunning"),
STOPPED("SystemStopped"),
IDLE("tmpIdle");
public static String key;
private Mode(String key){
this.key = key;
}
}
现在,我想通过反射找出该枚举的键(SystemRunning,SystemStopped,tmpIdle):
Class<?> c = Class.forName("Mode");Object[] objects = c.getEnumConstants();
// now this is not what I want, but almost
for(Object obj : objects){
System.out.println("value : " + obj);
}
输出为:RUNNING STOPPED IDLE
但是,我想使用Strings SystemRunning,tmpIdle等。
提前非常感谢您。
回答:
首先,您需要使您key
的非静态变量。
private String key; // I made it private on purpose
然后,您需要在枚举中添加getter方法,该方法将返回 key
public String getKey() { return key;
}
然后将for
循环更改为类似的内容。
for (Object obj : objects) { Class<?> clzz = obj.getClass();
Method method = clzz.getDeclaredMethod("getKey");
String val = (String) method.invoke(obj);
System.out.println("value : " + val); // prints SytemRunning, SystemStopped and tmpIdle
}
以上是 通过反射获取枚举的值 的全部内容, 来源链接: utcz.com/qa/413087.html