Java 解决Enum.valueOf找不到枚举出现的异常
由于Enum.valueOf匹配不到枚举时会出现异常,这个可以用try...catch来解决,但是这样会导致代码往臃肿的道路上越走越远。
本文与其说是解决Enum.valueOf找不到枚举出现的异常还不如说是换了解决方案:
现在有这么一个枚举
/**
* 类型操作接口
*/
public interface TypeEnum {
Boolean ret(); // 表示是某个类型时返回结果
}
public enum ImageEnumImpl implements TypeEnum {
/**
* jpeg类型的图片
*/
JPEG {
@Override
public Boolean ret() {
return true;
}
},
/**
* jpg类型的图片
*/
JPG {
@Override
public Boolean ret() {
return true;
}
},
/**
* gif类型的图片
*/
GIF {
@Override
public Boolean ret() {
return true;
}
},
/**
* bmp类型的图片
*/
BMP {
@Override
public Boolean ret() {
return true;
}
},
/**
* png类型的图片
*/
PNG {
@Override
public Boolean ret() {
return true;
}
},
}
服务端需要通过枚举来判断支持上传的文件类型,可以使用Enum.valueOf来判断,而且很香
if (ImageEnumImpl.valueOf(exhibitionName).ret()){}
但是如果枚举类中并不存在这个类型就会抛出一个异常,导致无法用if的方式来判断,可以使用以下代码来操作,当枚举不存在时返回null
private ImageEnumImpl getIfPresent(String name) {
return Enums.getIfPresent(ImageEnumImpl.class, name).orNull();
}
使用这个方法,这样代码就好看多了
if (getIfPresent(exhibitionName) == null) {
return AjaxResult.error(400, "请上传正确的图片文件,如:jpg、png、bmp、gif!");
}
Java 解决Enum.valueOf找不到枚举出现的异常的更多相关文章
- [改善Java代码]使用valueOf前必须进行校验
每个枚举都是java.lang.Enum的子类,都可以访问Enum类提供的方法,比如hashCode(),name(),valueOf()等..... 其中valueOf()方法会把一个String类 ...
- Java中Enum类型的序列化(转)
在Java中,对Enum类型的序列化与其他对象类型的序列化有所不同,今天就来看看到底有什么不同.下面先来看下在Java中,我们定义的Enum在被编译之后是长成什么样子的. Java代码: Java代码 ...
- java 数据类型:枚举类enum、对比方法compreTo()、获取名字.name()、获取对应值的枚举类Enum.valueOf()、包含构造方法和抽象方法的enum;实现接口;
问题引入 为了将某一数据类型的值限定在可选的合理范围内,比如季节只有四个:春夏秋冬. 什么是枚举类 Java5之后新增了enum关键字(他与class,interface关键字地位相同)用来定义枚举类 ...
- Java中Enum枚举的使用
三种不同的用法 注意项: 1.在switch中使用枚举能使代码的可读性更强. 2.如果要自定义方法,那么必须在enum实例序列的最后添加分号.而且Java要求必须先定义enum实例. 3.所有 ...
- Linux中命令行编译java接口总是提示找不到符号的疑难杂症的解决
今天学习java的接口,在linux的命令行下写代码练练手吧,啪啪啪一顿猛敲,写了一个接口UsbInserface,UDisk继承UsbInterface,写完了那就编译到bin目录呗. 当时写程序的 ...
- Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用-um
ylbtech-Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用 1.返回顶部 1. Java 实例 - Enum(枚举)构造函数及方法的 ...
- Rhythmk 一步一步学 JAVA (18): Enum枚举学习
枚举定义: public enum SizeEnum { SMALL, BIG, BIGEST }; public enum SizeStringEnum { SMALL("小") ...
- java中enum类型的使用
java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我 ...
- JAVA中enum的常见用法
JAVA中enum的常见用法包括:定义并添加方法.switch.遍历.EnumSet.EnumMap 1.定义enum并添加或覆盖方法 public Interface Behaviour{ void ...
随机推荐
- Shiro入门学习---使用自定义Realm完成认证|练气中期
写在前面 在上一篇文章<shiro认证流程源码分析--练气初期>当中,我们简单分析了一下shiro的认证流程.不难发现,如果我们需要使用其他数据源的信息完成认证操作,我们需要自定义Real ...
- 图像sensor的bitdepth
参考来源:https://blog.csdn.net/yuejisuo1948/article/details/83617359 bitdepth目前个人理解是sensor像素上表示颜色的范围,也可说 ...
- Ubuntu18.04下Git安装及使用
Ubuntu 18.04 git安装配置及基本使用 git Ubuntu 准备 对Ubuntu相关资源升级 1. linux资源升级 sudo apt-get update 2. linux软件升级 ...
- ubuntu20 使用命令安装 mysql
命令安装 mysql sudo apt-get update sudo apt-get install -y mysql-server mysql-client 查看 mysql 安装情况 servi ...
- 多测师讲解自动化selenium___定位元素002___高级讲师肖sir
高级自动化测试python+selenium教程手册 --高级讲师肖sir(Harm) 第 2 章8种定位方法 总结: selenium 的 webdriver 提供了八种基本的元素定位方法,前面六种 ...
- 多测师讲解html _无序列表006_高级讲师肖sir
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>无 ...
- 联赛%你测试10T2:漫无止境的八月
题意: 思路: 有几个特殊的性质: 在不考虑q里面的单点修改,我们先只判断一个序列是否Yes. 我们注意到每次操作都是对一个长度为k的区间进行区间加减1的操作,所以我们如果将序列里面的数按%k分组,把 ...
- spring boot:使用redis cluster集群作为分布式session(redis 6.0.5/spring boot 2.3.1)
一,为什么要使用分布式session? HpptSession默认使用内存来管理Session,如果将应用横向扩展将会出现Session共享问题, 所以我们在创建web集群时,把session保存到r ...
- linux(centos8):使用tree命令查看目录结构
一,tree命令的用途 tree命令以树状图列出文件目录结构 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的源 ...
- ImageMagick实现图片加水印(ImageMagick6.9.10)
一,ImageMagick的安装 请参见: https://www.cnblogs.com/architectforest/p/12807514.html 说明:刘宏缔的架构森林是一个专注架构的博客, ...