首页 > 解决方案 > Java使用Enum Generic的values方法

问题描述

我想用枚举参数化一个类,然后在类的构造函数中创建一个数组,其大小与枚举中元素的数量相同。

我创建了这样的类:

public class LogLine <T extends Enum<T>> {

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

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

它不起作用。编译器看不到 values 方法。我尝试使用 T 扩展字符串而不是枚举。然后可以访问所有静态方法。这里有什么问题?

标签: javagenericsenums

解决方案


您必须声明一个接受的构造函数Class

public LogLine(Class<T> c) {
    numberOfElementsInEnum = c.getEnumConstants().length;
}

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


推荐阅读