日常开发中,枚举的用的地方还是很多的,比较简单的就是,通过一个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)