Java如何获取枚举类型的值
更新时间:2023年07月24日 14:47:11 作者: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));
}
}输出结果

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决scala.collection.mutable.Map写入的问题
这篇文章主要介绍了解决scala.collection.mutable.Map写入的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06
Java中java.lang.ClassCastException异常原因以及解决方法详解
这篇文章主要给大家介绍了关于Java中java.lang.ClassCastException异常原因以及解决方法的相关资料,ClassCastException从字面上看是类型转换错误,通常是进行强制类型转换时候出的错误,需要的朋友可以参考下2024-02-02
SpringBoot+Redis使用AOP防止重复提交的实现
本文主要介绍了SpringBoot+Redis使用AOP防止重复提交的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-07-07
Java中==符号与equals()的使用详解(测试两个变量是否相等)
下面小编就为大家带来一篇Java中==符号与equals()的使用详解(测试两个变量是否相等)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-07-07
Spring项目中Ordered接口的应用之全局过滤器(GlobalFilter)的顺序控制
在Spring框架,尤其是Spring Cloud Gateway或Spring WebFlux项目中,Ordered接口扮演着重要的角色,特别是在实现全局过滤器(GlobalFilter)时,用于控制过滤器执行的优先级,下面将介绍如何在Spring项目中使用Ordered接口来管理Global Filter的执行顺序,需要的朋友可以参考下2024-06-06


最新评论