处理 java.lang.IllegalArgumentException:没有枚举常量的最佳方法是什么

2024-03-24

枚举类是这样的:

public enum UserRoles {
    ADMIN, TEST
}

我想处理它,这样如果枚举中没有值,它就不应该抛出异常。我这样处理:

for(String roleString : roleStrings){
    if(roleString.isEmpty())
        continue;
    UserRoles userRole;
    try {
        userRole = UserRoles.valueOf(roleString);
    } catch(IllegalArgumentException e) {
        continue;
    }
    accountRoles.add(userRole);
}

有更好的方法吗?


您可以引入一个静态方法来获取Enum如果找到则为您提供值,否则返回null.

enum UserRoles {
    ADMIN, TEST;

    public static UserRoles fetchValue(String constant) {
       return Arrays.stream(UserRoles.values())
                    .filter(e -> e.name().equals(constant))
                    .findFirst()
                    .orElse(null);
    }
}

现在即使Enum未找到常量null将返回而不是抛出异常。使用方法如下:

UserRoles userRole = UserRoles.fetchValue(str);
if (userRole != null) {
    accountRoles.add(userRole);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 java.lang.IllegalArgumentException:没有枚举常量的最佳方法是什么 的相关文章

  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 酒吧升级降级了我的主包

    这是我的依赖项列表 dependencies browser any polymer any polymer elements any angular any lawndart any validate any http utils any
  • 如何使用c#在现有的word文档中插入图像

    我正在与word and c 使用我的代码拍摄快照并将其保存在特定文件夹中 例如 C Temp 现在我想将图像保存到现有的 Word 文档中 非常感谢任何有关简短代码示例的帮助 会更喜欢使用Microsoft Office Interop
  • 如何在给定的文本片段中找到匹配括号或大括号的位置?

    许多文本编辑器和 IDE 都有一项功能 当光标放置在其中一对中的开始或结束字符上时 会突出显示匹配的括号 方括号或大括号 给定文本文件中左括号或右括号的位置 使用什么算法来查找匹配括号的位置 请记住 这些字符可以嵌套 因此只需向前或向后扫描
  • 关于创建包含按钮的图库视图的问题?

    我创建了一个包含按钮的图库 示例代码如下 public class Adapter extends BaseAdapter private Context mContext public ImageAdapter Context c mCo
  • 如何在 Bootstrap 下拉悬停上添加延迟

    我正在尝试为引导下拉菜单添加延迟 我已经添加了 css 以使下拉列表在悬停时显示 你可以在这里测试一下http www bootply com YcVBzvXqrR http www bootply com YcVBzvXqrR 这是我的
  • 如何在ios中写入json文件

    这里我正在读取和写入一个 json 文件 读取正确 但当我写入文件时 它不会在 json 文件中写入数据 这是我的代码 reading Json file NSString filePath NSBundle mainBundle path
  • apache mysql - 3306 上的“数据包乱序”

    我刚刚全新安装了 Apache 服务器 2 2 一切正常 当我访问本地主机时 我得到 它有效 我刚刚安装了 mySQL5 5 当我访问 localhost 3306 时 我只是得到乱码 J 5 5 22 4 LM D p 6 I 4 9z
  • 对象适配是否会破坏 Chrome 中的某些图像长宽比?

    I m using object fit cover on some IMG tags within a wrapper div to try to fill a div with the image I ve noticed that s
  • 密码输入字段在焦点/类型上从文本更改为密码?

    我有一个注册表单 其中输入的标题位于文本框中 当您单击该框时 文本消失 但在密码上我希望预览文本保留为 密码 而不是 但是当用户单击文本框时应清除文本 并且输入的文本应显示为 这是按钮的代码
  • 如何生成从最短到最长的所有可能字符串的列表

    我需要使用数字和字母生成无限的字符串列表 第一个字符串应该只是 a 然后是 b 到 z 然后是 0 到 9 然后是 aa ab 等 我可以轻松地用一个字符生成那些 但随后它会变得更加复杂 因此 假设我们已经有了所有可能字符串的列表 allS
  • Apache + mod_wsgi - Python 不加载已安装的模块

    我有一个带有 mod wsgi 的 Apache 服务器 运行 Python 2 7 脚本 该脚本使用通过 pip 安装的 python Pillow 模块 通常使用运行脚本python script py工作正常 但从 wsgi 运行脚本
  • 使用自定义属性创建有效的站点地图

    我正在一个网站上工作 我的网站有一个 sitemap xml 文件 该文件可以看到here http www ecofic com resources root sitemap xml 如果你向下滚动 你会看到一个url包含一些自定义标签的
  • Git hook 用于根据推送到远程服务器的分支更新各种 Web 文件夹

    我正在使用 Gitosis Debian Lenny 开发一个 Web 应用程序 我希望能够将其推送到不同的远程存储库 位置 从而允许应用程序的 前沿 发布候选 和 生产 版本镜像物理 Web 目录和代码库 我希望每个目录都有一个应用程序分
  • 使用纯 Observable 与数组(来自订阅)

    我想知道有关使用纯可观察值与订阅可观察值并使用数组的最佳实践 选项 1 纯可观察 this schools this angularFire database list schools 然后在 HTML 中使用异步管道 和 rxjs 运算符
  • 替换 JS 中的变音符号

    我正在比较字符串 并且必须替换 JS 中的变音符号 但 JS 似乎无法识别字符串中的变音符号 文本来自数据库 在浏览器中变音确实显示得很好 function replaceUmlauts string value string toLowe
  • 如何在C#中实现内存事务范围?

    我们有一个缓存 我想在其中放置一些事务范围 以便任何进程都必须显式 提交 它想要对缓存对象执行的更改 并且可以在进程中途失败时回滚任何更改 现在 我们正在根据 get 请求深度克隆缓存的对象 它可以工作 但它不是一个干净的解决方案 并且还涉
  • ASP.NET - bin 目录与在 web.conf 中添加程序集

    我对 ASP NET 编程相对较新 但不是一般的编程 并且我一直在研究移交给我的一个项目 在这个项目中 有一个 bin 目录 其中包含大量各种 DLL 文件 然后 在 web conf 文件中的程序集结构内 在 XML 内 添加了大量其他程
  • ASP.NET MVC 4 中的 Web Api 中的路由

    我正在将 Web api 与 ASP NET MVC 4 结合使用 我有以下命名的控制器 客户控制器 控制器 客户 ApiController ApiController 早些时候我的CustomerApiController被命名为Cus
  • 在java中使用enum作为类

    我有一个班级enum在它和类中 其中包含list该对象的 public enum State ACTIVE NOT ACTIVE public class SomeObject State state public SomeObject S
  • 处理 java.lang.IllegalArgumentException:没有枚举常量的最佳方法是什么

    枚举类是这样的 public enum UserRoles ADMIN TEST 我想处理它 这样如果枚举中没有值 它就不应该抛出异常 我这样处理 for String roleString roleStrings if roleStrin