枚举进阶,获取枚举实列

日常开发中,枚举的用的地方还是很多的,比较简单的就是,通过一个key获取value,但是有时候,一个枚举需要定义多个字段,最好的办法,就是获取该枚举的实列,通过实例,获取枚举中的任意值。直接上代码。

package com.stone.cn;

public enum StudentEnum {
    ONE_DAY("monday","星期一","language","语文"),
    TWO_DAY("tuesday","星期二","math","数学")
    ,THREE_DAY("wednesday","星期三","politics","政治")
    ,FOR_DAY("thursday","星期四","english","英语")
    ,FIVE_DAY("friday","星期五","economics","经济学");


    private String dayKey;
    private String nameValue;
    private String subjectKey;
    private String subjectName;

    public String getDayKey() {
        return dayKey;
    }

    public String getNameValue() {
        return nameValue;
    }

    public String getSubjectKey() {
        return subjectKey;
    }

    public String getSubjectName() {
        return subjectName;
    }

    /**
* @author:stone
* @date:2022/11/20 0020 20:50
* @description: 全参
*/
    StudentEnum(String dayKey, String nameValue, String subjectKey, String subjectName) {
        this.dayKey = dayKey;
        this.nameValue = nameValue;
        this.subjectKey = subjectKey;
        this.subjectName = subjectName;
    }
    /**
     * @author:stone
     * @date:2022/11/20 0020 20:59
     * @description: 通过key 获取枚举实列,这样就可以获取改枚举的任意值
     */
    public static StudentEnum getInstance(String dayKey){
        for (StudentEnum studentEnum : values()) {
            if (studentEnum.getDayKey().equals(dayKey)){
                return studentEnum;
            }
        }
        return null;
    }
    

}

这个有个细节,就是获取实例之后,如果你用这个实列获取字段,可能存在一个情况,就是你传入的值,枚举中没有,返回是一个null; 当你再用这个值去equals比较,就会报指针,所以,正常开发中,equals之前一定要写一个明确的值。

public class TestOne {
    public static void main(String[] args) {
        System.out.println(StudentEnum.getInstance("one").getNameValue().equals("星期一"));
    }
}

//结果如下
Exception in thread "main" java.lang.NullPointerException
	at com.stone.cn.test.TestOne.main(TestOne.java:7)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值