在该示例中,我如何找出我的枚举有多少个值:
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在运行时没有任何意义。