大家好,又见面了,我是你们的朋友全栈君。
开发过程中为了代码的可阅读性和可维护性,很多类型字段往往会习惯使用枚举去定义,可是在一些判断里面想用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后跟的是常量表达式而导致报错
解决办法:知道枚举的值,可先获取枚举值对应的枚举,再使用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、修改方法逻辑
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159286.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...