在该示例中,我如何找出我的枚举有多少个值:

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


最后一行不起作用。

最佳答案

您需要传递枚举的类文字:

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

...

Analyser<MyEnum> analyser = new Analyser(MyEnum.class);


这是因为C由于type erasure在运行时没有任何意义。

10-04 18:11