原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
一直觉得java的枚举就是个鸡肋,用得并不多,入坑这么多年也没正眼瞧过它。这段时间突然尝到甜头了,拿出来分享下。
废话不多讲,首先假设我们的需求是这样的,有一个用户表,里面存了用户的性别,分别是保密、男、女三个,我们用int类型0、1、2来表示。当我们要返回给前端用户性别的时候无非就两种方案:
public enum Gendar {
KEEP(0, "保密"), MALE(1, "男"), FEMALE(2, "女");
private int index;// 性别索引
private String gendar;// 性别内容
private static List<Gendar> gendarList;
/**
* @Title: getGender @Description: TODO(获取性别) @param @param
* genderIndex @param @return 设定文件 @return Gender 返回类型 @throws
*/
public static String getGendar(int gendarIndex) {
initList();
for (Gendar gendar : gendarList) {
if (gendar.index == gendarIndex) {
return gendar.gendar;
}
}
return null;
}
/**
* @Title: initList @Description: TODO(初始化genderList) @param 设定文件 @return
* void 返回类型 @throws
*/
public static void initList() {
if (gendarList == null) {
gendarList = new ArrayList<Gendar>();
gendarList.add(KEEP);
gendarList.add(MALE);
gendarList.add(FEMALE);
}
}
private Gendar(int index, String gendar) {
this.index = index;
this.gendar = gendar;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getGendar() {
return gendar;
}
public void setGendar(String gendar) {
this.gendar = gendar;
}
}
使用的时候我们直接调用getGendar方法:
public static void main(String[] args) {
System.out.println(Gendar.getGendar(0));
}
运行效果:
以上是处理固定的性别,如果在项目中遇到不固定的情况,比如平台的用户角色什么的,万恶的产品经理今天加一个明天删一个,用switch、if..else什么的维护起来非常麻烦,而用枚举就显得很优雅很方便,只要增加或注释调一个常量,在初始化列表中把这个常量添加进去或者注释掉就行了。