1. 程式人生 > >java反射獲取列舉值

java反射獲取列舉值

先說下列舉類的結構:列舉類中有許多列舉常量,列舉常量由列舉類中各個欄位組成,更確切的說,列舉常量由構造方法入參欄位構成。

所以如果要獲取列舉常量中的值,首先需要使用class的getEnumConstants()方法獲取列舉類中所有的列舉常量,然後使用類中對應的方法,得到常量中包含欄位的值。程式碼如下:

1.列舉類程式碼示例

package com.ecarx.jsk.jdk.poi;

public enum ResultCode {
    CODE_5200("8200", "認證失敗"),
    CODE_5201("8201", "使用者不存在"),
    CODE_5202("8202", "Token驗證失敗"),
    CODE_5203("8203", "Token重新整理失敗");
    private String code;
    private String name;

    private ResultCode(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public String getCode() {
        return this.code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
2.利用反射獲取列舉值程式碼
    @Test
    public void getEnumValue() throws Exception {
        // 1.得到列舉類物件
        Class<?> clz = ResultCode.class;
        // 2.得到所有列舉常量
        Object[] objects = clz.getEnumConstants();
        Method getCode = clz.getMethod("getCode");
        Method getName = clz.getMethod("getName");
        for (Object obj : objects){
        // 3.呼叫對應方法,得到列舉常量中欄位的值
            System.out.println("code=" + getCode.invoke(obj) + "; name=" + getName.invoke(obj));
        }
    }

3.輸出結果