这里枚举类型有自己的反射方式:
这里我先总结下逻辑:
1. 通过getEnumConstatnts返回目前枚举中存在的对象。
2. 通过getMehod获取方法。
3. 最后用这个对象调用其方法。
程序运行截图如下:
其中对应的枚举:
源码如下:
Em.java
package en;
public enum Em {
ONE_EM(10001, "ONE"),
TWO_EM(10002, "TWO"),
THREE_EM(10003, "THREE");
private Integer emID;
private String emString;
Em(Integer emID, String emString){
this.emID = emID;
this.emString = emString;
}
public Integer getEmID() {
return emID;
}
public String getEmString() {
return emString;
}
}
main.java
import en.Em;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class main {
public static void main(String args[]) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
//打印反射数据
Class emCLass = Em.class;
Object[] enumConstants = emCLass.getEnumConstants();
Method getEnumID = emCLass.getMethod("getEmID");
Method getEnumString = emCLass.getMethod("getEmString");
for(Object item : enumConstants){
Object invokeID = getEnumID.invoke(item);
Object invokeString = getEnumString.invoke(item);
System.out.println("invokeID:" + invokeID + "\tinvokeString:" + invokeString);
}
}
}