我们有一个 REST API,客户端可以提供代表服务器上 Java 枚举中定义的值的参数。
所以我们可以提供一个描述性错误,我们添加这个lookup
每个枚举的方法。看起来我们只是在复制代码(不好)。有更好的做法吗?
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);
}
}
}
Update:默认提供的错误消息valueOf(..)
将会No enum const class a.b.c.MyEnum.BadValue
。我想从 API 中提供更具描述性的错误。
也许你可以实现通用静态lookup
method.
Like so
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);
}
}
或显式调用实用程序类查找方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)