我对 java 泛型完全感到困惑,现在试图解决以下问题。
我有这个功能:
private static Enum<?> findEnumValue(final Class<Enum<?>> cls, final Object value)
{
if (value == null) {
return null;
}
if (value instanceof Enum<?>) {
return (Enum<?>) value;
}
if (value instanceof String) {
for (Enum<?> item : cls.getEnumConstants()) {
if (item.name().equals(value)) {
return item;
}
}
}
return null;
}
我试图向此函数传递一个普通的枚举,例如 Name
及其值 JOHN
,如下所示:
findEnumValue(Name.class, Name.JOHN.name())
但这不起作用。请有人指出我的错误并解释我做错了什么。
这是名称枚举:
public enum Name {
JOHN,
MARK;
}
谢谢大家的帮助!
最佳答案
您可以使用Class<? extends Enum<?>>
而不是Class<Enum<?>>
。 Name.class
不是Class<Enum<?>>
.
关于java - 任何类型泛型构造的枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26391772/