java – 通过反射获取枚举值
发布时间:2020-05-24 14:39:00 所属栏目:Java 来源:互联网
导读:我有一个这样的枚举: public enum Mode{ RUNNING(SytemRunning), STOPPED(SystemStopped), IDLE(tmpIdle); public static String key; private Mode(String key){ this.key = key; }} 现在,我想通过反射来获取此
|
我有一个这样的枚举: 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);
}
输出是: 但是,我想要使用Strings SystemRunning,tmpIdle等. 非常感谢你提前. 解决方法首先,您需要将密钥设为非静态变量.private String key; // I made it private on purpose 然后你需要在你的枚举中添加一个getter方法,它将返回密钥 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
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
