Java中的通用枚举

t.h*_*ntz 5 java generics enums

我有一个基本的Configuration类,它提供了所有可能的键和枚举中相应值类型的类型,如下所示:

public class Configuration {
    public static enum Key {
        FIRST_KEY("actual key 1", Long.class),
        ANOTHER_KEY("actual key 2", Integer.class)

        public final String value;
        public final Class type;

        Key(String value, Class type) {
            this.value = value;
            this.type = type;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是编写一个方法,从String解析给定键的值,并返回值作为适当的类型.基本上这个:

public <T> T getValue(Key<T> key, String valueStr);
Run Code Online (Sandbox Code Playgroud)

此尝试在方法声明中已失败,因为它看起来Java中的Enums不能具有类型参数.关于如何实现与此相似的任何想法?

小智 -1

您必须将枚举类作为参数传递:

public <T extends Enum> T getValue(key, Class<T extends Enum> enumClazz) {
    return enumClazz.cast(...);
}
Run Code Online (Sandbox Code Playgroud)