java - Java中哪个类实现了抽象类EnumSet?
问题描述
我看到 EnumSet.of() 返回EnumSet类型的对象的实例。但我无法弄清楚哪个类实际实现了这个抽象类?如果没有子类化,如何获得抽象类型 EnumSet 的实例?
解决方案
这是java中的2个扩展类EnumSet
1. RegularEnumSet
2. JumboEnumSet
您可以使用 EnumSet 的静态方法(如 等)创建实例EnumSet#noneOf
。EnumSet#allOf
实际上返回的实例RegularEnumSet
或JumboEnumSet
取决于条件。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);
}
推荐阅读
- ios - 自定义 ViewController 过渡总是从中心开始
- entity-framework - 将具有展平集合的表映射回集合
- c# - 打印适合 A4 纸的 Windows 窗体
- r - R 比例填充手册 - 一个值两种颜色
- javascript - 如何找到加载 iframe html 的站点?
- command-line - Node.js - 使用 npm 安装 webpack - npm ERR!400 错误请求 - 获取 http://registry.npmjs.org/webpack
- perl - Find and replace a string in Perl
- java - 获取父表和子表或大子表之间的链接并存储在java对象中
- hasura - 为什么自动 Hasura 迁移会输出 metadata.yaml 文件?
- ios - UIKitCore 中的崩溃:_UIAnalyticsGatherMultitouchAnalytics