枚举类是这样的:
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);
}
关于java - 处理 java.lang.IllegalArgumentException : No enum constant 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54148910/