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.输出结果

4b8579998792be13da4a88a9db318736.png

你可能感兴趣的:(java反射获取枚举参数)