废话不多说,先上代码,拿性别举个列子。
定义一个枚举类
public enum SexEnum {
ERROR("0", "错误的性别"),
MAN("1", "男人"),
WOMAN("2", "女人");
String code;
String name;
//枚举被设置成单例的,是不允许new的,所以构造方法默认是private修饰的
SexEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static SexEnum getSexEnumByCode(String code){
for(SexEnum sexEnum : SexEnum.values()){
if(StringUtils.equals(code, sexEnum.getCode())){
return sexEnum;
}
}
return ERROR;
/**
* 因为我们要结合switch使用,所以这里不要return null
* switch的对象是null时会抛出空指针异常
* 我这里定义了ERROR这个枚举,当传入的参数不可识别时,返回ERROR枚举
*/
//return null;
}
}
使用方式:
public class Demo26 {
public static void main(String[] args) {
String sex = "1";
switch (SexEnum.getSexEnumByCode(sex)){
case MAN:
System.out.println("this is a man");
break;
case WOMAN:
System.out.println("this is a woman");
break;
default:
System.out.println("maybe it's an alien");
break;
}
}
}
如果if else分支比较多,选用switch case也是个不错的方法。
这里要注意的是switch的对象如果是null,会报空指针。枚举类中定义了ERROR枚举,是为了让getSexEnumByCode方法的入参是不能识别的编码时,不要retrun null。这样就能规避空指针的问题。