我需要重新实现一些枚举的enum.valueof方法,这样它们就不再抛出异常,而是如果枚举中不存在值,它们只返回null.
我正在尝试基本的
@Override
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
String name){
Run Code Online (Sandbox Code Playgroud)
但它没有用,说我需要覆盖或实现超类型.
我想我可以拿出一个超级课,但我不知道如何把它放在一起.有任何想法吗?
JB *_*zet 19
你不能.你必须定义另一种不同的方法.valueOf方法由编译器自动生成.
public static MyEnum permissiveValueOf(String name) {
for (MyEnum e : values()) {
if (e.name().equals(name)) {
return e;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
使用Apache Commons Lang:
MyEnum myEnum = EnumUtils.getEnum(MyEnum.class, "MY_ENUM_VALUE");
Run Code Online (Sandbox Code Playgroud)
引用来自Javadoc的EnumUtils.getEnum:
获取类的枚举,如果未找到则返回null.
此方法与Enum.valueOf(java.lang.Class,java.lang.String)的不同之处在于它不会为无效的枚举名称抛出异常.
| 归档时间: |
|
| 查看次数: |
20017 次 |
| 最近记录: |