查找Java枚举的最佳实践
我们有一个REST API,客户端可以在其中提供代表Java Enums中服务器上定义的值的参数。
因此,我们可以提供一个描述性错误,我们将此lookup
方法添加到每个Enum中。似乎我们只是在复制代码(错误)。有更好的做法吗?
public enum MyEnum {
A, B, C, D;
public static MyEnum lookup(String id) {
try {
return MyEnum.valueOf(id);
} catch (IllegalArgumentException e) {
throw new RuntimeException("Invalid value for my enum blah blah: " + id);
}
}
}
更新 :提供的默认错误消息valueOf(..)
为No enum const class
a.b.c.MyEnum.BadValue
。我想提供一个来自API的更具描述性的错误。
-
可能可以实现通用静态
lookup
方法。像这样
public class LookupUtil { public static <E extends Enum<E>> E lookup(Class<E> e, String id) { try { E result = Enum.valueOf(e, id); } catch (IllegalArgumentException e) { // log error or something here throw new RuntimeException( "Invalid value for enum " + e.getSimpleName() + ": " + id); } return result; } }
那么你就可以
public enum MyEnum { static public MyEnum lookup(String id) { return LookupUtil.lookup(MyEnum.class, id); } }
或显式调用实用程序类查找方法。
-
查找WebElement,最佳实践
2021-02-01 关注 0 浏览138 1答案
-
使用和保留枚举的最佳实践
2021-01-30 关注 0 浏览118 1答案
-
线程数组的最佳实践(java)
2021-01-30 关注 0 浏览72 1答案
-
线程数组的最佳实践(java)
2021-01-30 关注 0 浏览62 1答案
-
Java连接池最佳实践?
2021-01-29 关注 0 浏览119 1答案
-
Java:静态抽象(再次)-最佳实践
2021-01-29 关注 0 浏览78 1答案
-
(Java)包组织有最佳实践吗?
2022-07-28 关注 0 浏览12 1答案
-
最佳实践:Java静态非最终变量
2021-01-30 关注 0 浏览67 1答案
-
Java JSON序列化-最佳实践
2021-01-31 关注 0 浏览74 1答案
-
使用Java系统属性的最佳实践
2021-01-30 关注 0 浏览96 1答案