如何在Java的构造函数中分配通用枚举?

时间:2018-11-24 00:20:46

标签: java generics

我有以下代码

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()的{​​{1}}?

1 个答案:

答案 0 :(得分:0)

使整个类通用,而不仅仅是构造函数。

public class CustomEnum<E extends Enum<E>> {

    private E[] constants;

    public CustomEnum(Class<E> enumClass) {
        constants = enumClass.getEnumConstants();
    }

}