java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java获取枚举类型的值

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));
        }
    }

输出结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文