Java – get enumeration values through reflection
•
Java
I have an enumeration like this:
public enum Mode{ RUNNING("SytemRunning"),STOPPED("SystemStopped"),IDLE("tmpIdle"); public static String key; private Mode(String key){ this.key = key; } }
Now, I want to get the key (systemrunning, systemstopped, tmpidle) of this enumeration through reflection:
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); }
The output is: running stopped
However, I want to use strings, systemrunning, tmpidle, etc
Thank you very much for your advance
Solution
First, you need to set the key to a non - static variable
private String key; // I made it private on purpose
Then you need to add a getter method to your enumeration, which will return the key
public String getKey() { return key; }
Then change your for loop to something like this
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 }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码