EnumSet.allOf 是创建包含枚举全部常量的 EnumSet 的最简洁高效方式,传入枚举类 .class 即可自动初始化,返回可变、类型安全、位向量实现的集合,顺序与声明一致。

EnumSet.allOf 是 Java 中最简洁高效的方式,用来创建一个包含指定枚举类全部常量的 EnumSet 实例。
直接传入枚举类字节码即可
只需把枚举类型的 .class 对象传给 allOf() 方法,它会自动遍历所有枚举常量并初始化集合:
- 方法签名:
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType) - 返回的是可变的、类型安全的
EnumSet,底层用位向量实现,性能极佳 - 要求传入的 class 必须是枚举类型,否则运行时抛出
IllegalArgumentException
典型用法示例
假设有如下枚举:
enum Color { RED, GREEN, BLUE }一行代码就能拿到全量集合:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
EnumSet此时 allColors 包含 {RED, GREEN, BLUE},顺序与枚举声明顺序一致。
注意事项和常见搭配
- 返回的集合是可修改的,如需不可变视图,可用
Collections.unmodifiableSet(allColors) - 不能用于空枚举(即没有枚举常量的枚举类),会抛异常
- 常与集合运算配合使用,比如:
EnumSet.copyOf(allColors).remove(Color.RED)得到除 RED 外的所有颜色 - 比手动用
EnumSet.of(e1, e2, ...)或循环添加更简洁,尤其在枚举常量较多时优势明显
对比其他初始化方式
相比 EnumSet.noneOf(Color.class)(空集)或 EnumSet.of(Color.RED, Color.GREEN)(指定元素),allOf 是唯一能“一键全选”的方法。它不依赖硬编码的常量列表,维护性好,新增枚举值后无需改初始化逻辑。

















