创建一个泛型枚举集合。

3

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

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

这是我的目前解决方法,我觉得有些笨拙:
private EnumSet<T> emptyEnumSet() {
    T first = enumConstants[0];
    EnumSet<T> result = EnumSet.of(first);
    result.remove(first);
    return result;
}
1个回答

6

EnumSet.noneOf() 可以满足您的需求。您的代码将 Class<T> 作为构造函数参数接收,因此您需要将其存储在字段中。


哦,我想我在泛型类型参数方面有些混淆了。它确实可以工作。 - steffen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接