switch配合enum的使用
  ad0AfbrABj5P 2023年12月08日 20 0

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

定义一个枚举类

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月08日 0

暂无评论

ad0AfbrABj5P
作者其他文章 更多