java - 任何类型泛型构造的枚举类

标签 java generics enums

我对 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/

相关文章:

java - 玩框架! (1.2.4): null first several dynamic parameters

Java 程序无法运行

java - 正则表达式替换除字母以外的所有内容

c# - 通用构造函数和继承

Java - 为参数化泛型类获取比 "Class<?>"更具体的类型

go - 如何使用 Golang 中的数字枚举以用户友好的 JSON 格式保存节俭结构?

java - 在java中查找天数差异

java - Java中的有序LinkedList逻辑,每次都会重新分配LinearNode头

c# - 使用枚举是列出不同 "Types of Car"的最佳方式吗

c# - DataAnnotations 命名空间中的 Enum 值是否有开箱即用的验证器?