0
点赞
收藏
分享

微信扫一扫

switch配合enum的使用

棒锤_45f2 2023-12-07 阅读 39

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

定义一个枚举类

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

举报

相关推荐

0 条评论