方法从类变量返回类型

Att*_*zki 0 java generics wildcard

鉴于以下课程:

  ...

  Class<? extends Enum<?>> enumType;

  public MyClass(Class<? extends Enum<?>> enumType) {
    super();

    this.enumType=enumType;

  ...
Run Code Online (Sandbox Code Playgroud)

如何定义返回"enumType"类的枚举的方法?

我需要这样的东西:

public enumType getValue(){
  ...
}
Run Code Online (Sandbox Code Playgroud)

,但这不起作用..

Jes*_*per 7

使用类型参数而不是通配符.例如:

class MyClass<T extends Enum<T>> {
    private Class<T> enumType;

    public MyClass(Class<T> enumType) {
        this.enumType = enumType;
    }

    public T getValue() {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑为了回应你的评论,这里有一个列出任意常量的常量的方法enum:

public <E extends Enum<E>> void showEnumValues(Class<E> e) {
    for (E value : e.getEnumConstants())
        System.out.println(value);
    }
}
Run Code Online (Sandbox Code Playgroud)