作为一个稀有的Java妹子,所写的所有博客都只是当作自己的笔记,留下证据自己之前是有用心学习的~哈哈哈哈(如果有不对的地方,也请大家指出,不要悄悄咪咪的不告诉我)
Enum类
为什么要使用Enum呢?首先来看一段代码
//判断用户的身份,根据不同的身份调用不同的方法
public void judgeUserIdentity(int i){
switch (i){
case 0:
doSomething0();break;
case 1:
doSomething1();break;
case 2:
doSomething2();break;
case 3:
doSomething3();break;
case 4:
doSomething4();break;
}
}
类似这种代码,我在实际工作中也遇到过,可能只有写这段代码的人知道0,1,2,3,4代表什么,其他人拿到就一脸懵逼。所以这种情况下就需要用到枚举,让别人一眼就知道这些魔法值到底是什么含义。
创建枚举类
public enum EnumDemo {
//定义符合语义的枚举类型
COPPER("COPPER","铜卡"),
SILVER("SILVER","银卡"),
GOLD("GOLD","金卡"),
PLATINUM("PLATINUM","铂金卡"),
DIAMOND("DIAMOND","钻石卡");
//根据需要定义成员变量
private String type;
private String msg;
//构造方法初始化属性的值
EnumDemo(String type,String msg){
this.type = type;
this.msg = msg;
}
//getter获取属性值
public String getType() {
return type;
}
public String getMsg() {
return msg;
}
//该方法主要是为了在switch中使用枚举
public static EnumDemo getValue(String type){
if(type == null){
return null;
}
for(EnumDemo item:EnumDemo.values()){
if(type.equals(item.getType())){
return item;
}
}
return null;
}
}
创建好后,重构刚才的代码:
public void judgeUserIdentity(String type){
switch (EnumDemo.getValue(type)){
case COPPER:
doSomething0();break;
case SILVER:
doSomething1();break;
case GOLD:
doSomething2();break;
case PLATINUM:
doSomething3();break;
case DIAMOND:
doSomething4();break;
}
}
这样重构以后使得代码的可读性增强,便于维护。