枚举-判断有没有对应的枚举值
问题点:
使用枚举的 valueOf
方法时, 如果传入的是一个不存在的枚举name,那么就会抛出异常
public enum TravelTypeEnum {
FLIGHT("飞机"),
TRAIN("火车"),
HOTEL("酒店");
private String title;
TravelTypeEnum(String title) {
this.title = title;
}
@Override
public String getTitle() {
return null;
}
}
解决方案:
- 1 循环遍历
public static TravelTypeEnum getTypeEnum(String name){
if (StringUtils.isBlank(name)) {
return null;
}
for(TravelTypeEnum typeEnum:TravelTypeEnum.values()){
if(typeEnum.name().equals(name)){
return typeEnum;
}
}
return null;
}
- 2 使用 Enums 构建方法
/**
* 判断枚举类是否存在传入的枚举值
*/
public static TravelTypeEnum getIfPresent(String name) {
return Enums.getIfPresent(TravelTypeEnum.class, name).orNull();
}
使用
if(getIfPresent(name) == null){
// 说明不存在
return;
}