创建一个通用类型的枚举集

ste*_*fen 3 java generics enums

当我没有通用枚举的运行时类型时,如何创建一个空的EnumSet?示例代码:

public class Utility<T extends Enum<T>> {
    private T[] enumConstants;
    public Utility(Class<T> e) {
        enumConstants = e.getEnumConstants();
    }
    private EnumSet<T> emptyEnumSet() {
        // ?
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我目前的解决方法,我认为它有点笨拙:

private EnumSet<T> emptyEnumSet() {
    T first = enumConstants[0];
    EnumSet<T> result = EnumSet.of(first);
    result.remove(first);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

yol*_*ole 6

EnumSet.noneOf()应该做你需要的.您的代码接收Class<T>构造函数参数,因此您需要将其存储在字段中.