给定以下类别:

  ...

  Class<? extends Enum<?>> enumType;

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

    this.enumType=enumType;

  ...


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

我需要类似的东西:

public enumType getValue(){
  ...
}


,但这不起作用..

最佳答案

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

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

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

    public T getValue() {
        // ...
    }
}


编辑根据您的评论,这是一种列出任意enum的所有常量的方法:

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

09-11 19:18