枚举的通用类,值的数量

rat*_*osk 1 java generics enums

我如何找出我的枚举在这个例子中有多少值:

public class Analyser<C extends Enum<C>>{
  private long[] dist;
  public Analyser() {
    super();
    dist = new long [C.getEnumConstants().length];
  }
}
Run Code Online (Sandbox Code Playgroud)

最后一行不起作用.

Pau*_*ora 9

你需要传入枚举的类文字:

public Analyser(Class<C> enumType) {
    super();
    dist = new long [enumType.getEnumConstants().length];
}

...

Analyser<MyEnum> analyser = new Analyser(MyEnum.class);
Run Code Online (Sandbox Code Playgroud)

这是因为C由于类型擦除在运行时没有意义.