首页 > 解决方案 > Java中哪个类实现了抽象类EnumSet?

问题描述

我看到 EnumSet.of() 返回EnumSet类型的对象的实例。但我无法弄清楚哪个类实际实现了这个抽象类?如果没有子类化,如何获得抽象类型 EnumSet 的实例?

标签: javaenumset

解决方案


这是java中的2个扩展类EnumSet

1. RegularEnumSet
2. JumboEnumSet

您可以使用 EnumSet 的静态方法(如 等)创建实例EnumSet#noneOfEnumSet#allOf实际上返回的实例RegularEnumSetJumboEnumSet取决于条件。EnumSet#of内部调用EnumSet#noneOf。请参考下面的代码Java,看看如何EnumSet#noneOf工作

public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) {
    Enum<?>[] universe = getUniverse(elementType);
    if (universe == null)
        throw new ClassCastException(elementType + " not an enum");

    if (universe.length <= 64)
        return new RegularEnumSet<>(elementType, universe);
    else
        return new JumboEnumSet<>(elementType, universe);
}

推荐阅读