Java switch 使用枚举类

Java switch 使用枚举类开发过程中为了代码的可阅读性和可维护性,很多类型字段往往会习惯使用枚举去定义,可是在一些判断里面想用switch去代替ifelse就会出现以下问题publicenumSexType{MAN(1,”男”),GIRL(2,”女”),;privateinttype;privateStringwork;SexType(inttype,Stringwork){this.type=type;

大家好,又见面了,我是你们的朋友全栈君。

开发过程中为了代码的可阅读性和可维护性,很多类型字段往往会习惯使用枚举去定义,可是在一些判断里面想用switch去代替if else 就会出现以下问题

public enum SexType {
    MAN(1, "男"),
    GIRL(2, "女"),
    ;
    private int type;
    private String work;

    SexType(int type, String work) {
        this.type = type;
        this.work = work;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public String getWork() {
        return work;
    }

    public void setWork(String work) {
        this.work = work;
    }
}

如果直接使用会因为case后跟的是常量表达式而导致报错

Java switch 使用枚举类

解决办法:知道枚举的值,可先获取枚举值对应的枚举,再使用switch

1、修改枚举类,新增一个静态方法,getByType()

package com.jaryn.emun;

public enum SexType {
    MAN(1, "男"),
    GIRL(2, "女"),
    OTHER(0, "未知"),
    ;
    private int type;
    private String work;

    SexType(int type, String work) {
        this.type = type;
        this.work = work;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public String getWork() {
        return work;
    }

    public void setWork(String work) {
        this.work = work;
    }

    public static SexType getByType(int type){
        for (SexType constants : values()) {
            if (constants.getType() == type) {
                return constants;
            }
        }
        return OTHER;
    }
}

2、修改方法逻辑

Java switch 使用枚举类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159286.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Opencv中width和widthStep的区别

    Opencv中width和widthStep的区别在Opencv的结构Iplimage中,widthStep并不一定等于width*nChannel*(数据类型所占字节),这是因为Opencv中对内存有管理的机制,这一机制会对内存进行对齐,也就是当每一行所占的字节数不等于4的倍数时会自动补齐。例如:width=117,depth=8U,nChannel=1,则widthStep=120,因为117不是4的倍数,所以补齐到120。如果dep

    2022年6月7日
    43
  • linux下yum命令出现Loaded plugins: fastestmirror

    linux下yum命令出现Loaded plugins: fastestmirror

    2021年10月8日
    64
  • 计算机445 135 139端口,Win7如何关闭445 135 138 139端口[通俗易懂]

    计算机445 135 139端口,Win7如何关闭445 135 138 139端口[通俗易懂]5月12日全球爆发勒索病毒,国内外很多行业已遭受勒索病毒的侵害,勒索病毒迅速传播,目前已知传播途径基本都是通过445135137138139端口进行传播,那么只要关闭这些端口即可起到很好的预防作用,本文将介绍Win7怎么关闭445135137138139端口的方法。关闭445135137138139端口方法教程:1、打开Windows徽标(开始菜单),点击“控制面板”;2、…

    2022年10月10日
    3
  • ubuntu中科大镜像源_中国科技大学开源镜像

    ubuntu中科大镜像源_中国科技大学开源镜像#vim/etc/apt/sources.list//修改网络镜像源文件debhttps://mirrors.ustc.edu.cn/ubuntu/bionicmainrestrict

    2022年8月2日
    36
  • Java中如何遍历Map对象的4种方法

    Java中如何遍历Map对象的4种方法在Java中如何遍历Map对象HowtoIterateOveraMapinJava在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap,TreeMap,LinkedHashMap,Hashtable,等等)方法一在for-each循环中使用ent

    2022年4月19日
    73
  • MAC OS X 系统怎么样?

    朝鲜的IT应用状况并不为外界所熟知,过去媒体纷纷报道,朝鲜已故领导人金正日酷爱苹果电子产品,而最近一份调查报告显示,在朝鲜个人电脑操作系统市场,苹果MACOSX系统位居第一名,遥遥领先微软

    2021年12月23日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号