如何在枚举时重新实现值
我需要重新实现我的一些枚举的enum.valueof方法,以便它们不再引发异常,而是在枚举中不存在值时返回null。
我正在尝试基本
@Override
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
String name){
但它不起作用,说我需要覆盖或实现一个超类型。
我想我可以想出一个超级班级,但我只是不知道如何把它放在一起。有什么想法吗?
我需要重新实现我的一些枚举的enum.valueof方法,以便它们不再引发异常,而是在枚举中不存在值时返回null。
我正在尝试基本
@Override
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
String name){
但它不起作用,说我需要覆盖或实现一个超类型。
我想我可以想出一个超级班级,但我只是不知道如何把它放在一起。有什么想法吗?
你不能。您必须定义另一种不同的方法。valueOf 方法由编译器自动生成。
public static MyEnum permissiveValueOf(String name) {
for (MyEnum e : values()) {
if (e.name().equals(name)) {
return e;
}
}
return null;
}
使用Apache Commons Lang:
MyEnum myEnum = EnumUtils.getEnum(MyEnum.class, "MY_ENUM_VALUE");
引用自 EnumUtils.getEnum 的 Javadoc:
获取类的枚举,如果未找到,则返回 null。
此方法与 Enum.valueOf(java.lang.Class, java.lang.String) 的不同之处在于,它不会为无效的枚举名称引发异常。