Java如何获取枚举类型的值
作者:Henicr
这篇文章主要介绍了Java如何获取枚举类型的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
Java获取枚举类型的值
枚举类
public enum EasyExcelStyleType { NONE("默认样式", ExcelExportStylerDefaultImpl.class), BORDER("边框样式", ExcelExportStylerBorderImpl.class), COLOR("间隔行样式", ExcelExportStylerColorImpl.class), ONE("自定义样式一", EasyExcelStyle.class); EasyExcelStyleType(String str, Class<?> cla) { // 传递属性值 this.str = str; this.cla = cla; } // 属性Getter,Setter方法 private String str; private Class<?> cla; public String getStr() { return str; } public void setStr(String str) { this.str = str; } public Class<?> getCla() { return cla; } public void setCla(Class<?> cla) { this.cla = cla; } }
获取方法
public static void main(String[] args) throws Exception { // 获取属性一(str) System.out.println(EasyExcelStyleType.valueOf("ONE").getStr()); System.out.println(EasyExcelStyleType.ONE.getStr()); // 获取属性二(cla) System.out.println(EasyExcelStyleType.valueOf("ONE").getCla()); System.out.println(EasyExcelStyleType.ONE.getCla()); }
输出
java反射获取枚举值
先说下枚举类的结构:
枚举类中有许多枚举常量,枚举常量由枚举类中各个字段组成,更确切的说,枚举常量由构造方法入参字段构成。
所以如果要获取枚举常量中的值,首先需要使用class的getEnumConstants()方法获取枚举类中所有的枚举常量,然后使用类中对应的方法,得到常量中包含字段的值。
代码如下:
枚举类代码示例
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)); } }
输出结果
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。