我有以下代码
import java.util.Arrays;
public class CustomEnum {
//?? varName;
public <E extends Enum<E>> CustomEnum(Class<E> enumClass) {
System.out.println(Arrays.toString(enumClass.getEnumConstants()));
//?? varName = enumClass;
}
}
public enum Mode {
SAMPLE_A,
SAMPLE_B,
SAMPLE_C,
SAMPLE_D
}
我可以这样称呼它
public static void main(String[] args) {
CustomEnum customEnum = new CustomEnum(Mode.class);
}
代码输出
[SAMPLE_A, SAMPLE_B, SAMPLE_C, SAMPLE_D]
我想做的是将
enumClass
的值分配给一个变量,然后在构造函数中分配它,但我不知道该变量应为哪种类型,我尝试了多种方法,但遇到编译错误,这可能吗?如果上述方法不可行,我该如何转换泛型类型
E[]
由getEnumConstants()
返回到String[]
的? 最佳答案
使整个类通用,而不仅仅是构造函数。
public class CustomEnum<E extends Enum<E>> {
private E[] constants;
public CustomEnum(Class<E> enumClass) {
constants = enumClass.getEnumConstants();
}
}