Enum Generic的Java使用值方法

Ana*_*001 2 java generics enums

我想用枚举参数化一个类,然后在类的构造函数中创建一个具有枚举中元素数量大小的数组.

我创建了这样的类:

public class LogLine <T extends Enum<T>> {
Run Code Online (Sandbox Code Playgroud)

然后在构造函数中我尝试写这个:

public LogLine(){
numberOfElementsInEnum = T.values().length;
//then I would create the Array based on the numberOfElementsInEnum variable
Run Code Online (Sandbox Code Playgroud)

它不起作用.编译器没有看到values方法.我尝试用T扩展String而不是Enum.然后可以访问所有静态方法.这是什么问题?

keu*_*leJ 5

您必须声明一个接受以下内容的构造函数Class:

public LogLine(Class<T> c) {
    numberOfElementsInEnum = c.getEnumConstants().length;
}
Run Code Online (Sandbox Code Playgroud)

另请参见:https://docs.oracle.com/javase/tutorial/reflect/special/enumMembers.html