我有以下代码

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();
    }

}

07-26 02:26