枚举类是这样的:
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(使用前将#替换为@)