前言
提示:本文章重在解决枚举类在项目中的应用,需要提前知道枚举类是做什么的,适合有java基础的往下看,没有基础请自行百度学习该部分知识。
提示:利用简单易懂的方式来学习枚举类在项目中的应用,主要分为三大部分。
一、枚举类定义
定义了一个父接口,子接口实现父接口,分别是性别的枚举类,回家方式的枚举类
public interface CodeEnum {
/**
* interface
* */
Integer getCode() ;
String getMessage() ;
}
public enum Sex implements CodeEnum{
/**
* sex 性别
* */
SexType0(0,"man"),
SexType1(1,"woman");
private int code;
private String msg;
Sex(int code, String msg){
this.code = code;
this.msg = msg;
}
@Override
public Integer getCode() {
return code;
}
@Override
public String getMessage() {
return msg;
}
public void setCode(int code) {
this.code = code;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
public enum Way implements CodeEnum{
/**
* way 回家方式
* */
WayType0(0,"run"),
WayType1(1,"fly"),
WayType2(2,"taxi"),
WayType3(3,"train");
private int code;
private String msg;
Way(Integer code,String msg){
this.code= code;
this.msg = msg;
}
@Override
public Integer getCode() {
return code;
}
@Override
public String getMessage() {
return msg;
}
}
运行一下,可以看到成功,但是是直接访问的Sex该类进行获取的。
二、枚举类工具类
枚举工具类通过父接口,从而实现拿到该子类中的信息,比如下图中的getByCode方法,我可以通过code和该class文件,获取该code对应的该对象。
public static <T extends CodeEnum> T getByCode(Integer code, Class<T> enumClass) {
if (code != null) {
for (T each : enumClass.getEnumConstants()) {
if (code.equals(each.getCode())) {
return each;
}
}
}
return null;
}
三、枚举类字典
在项目中,可以通过,调用类的名称,从而显示该类中所有的枚举信息,通常在项目中在下拉选项中有独特优势。还是这个例子,可以进行类比。
public static void getDict(String enumName) {
ArrayList<Object> list1 = new ArrayList<>();
try {
Class<CodeEnum> c = (Class<CodeEnum>) Class.forName(enumName);
for (int i = 0; i < 5; i++) {
CodeEnum codeEnum = EnumUtil.getByCode(i, c);
if (codeEnum != null) {
ArrayList<Object> list2 = new ArrayList<>();
list2.add(codeEnum.getCode());
list2.add(codeEnum.getMessage());
list1.add(list2);
}
}
System.out.println(list1);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}