switch配合enum的使用

废话不多说,先上代码,拿性别举个列子。

定义一个枚举类

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。这样就能规避空指针的问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章