java反射獲取列舉值
阿新 • • 發佈:2019-01-31
先說下列舉類的結構:列舉類中有許多列舉常量,列舉常量由列舉類中各個欄位組成,更確切的說,列舉常量由構造方法入參欄位構成。
所以如果要獲取列舉常量中的值,首先需要使用class的getEnumConstants()方法獲取列舉類中所有的列舉常量,然後使用類中對應的方法,得到常量中包含欄位的值。程式碼如下:
1.列舉類程式碼示例
2.利用反射獲取列舉值程式碼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; } }
@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.輸出結果