是否有Java 7中的ImmutableEnumSet计划?

我想拥有EnumSet的所有效率并传递它,而不必担心有人会修改它。

您可以使用Google集合(Guava)获取不可变的EnumSet。


资源:

  • 番石榴主页
  • Google集合bug跟踪器 – 不可变枚举集便利构造函数
  • Google文档 – Sets.immutableEnumSet()

Collections.unmodifiableSet()包装EnumSet什么问题?

没错,原始的EnumSet仍然是可变的,但只要你丢弃原始引用,它就和包装器中的不可变一样好。

编辑:好的,因为EnumSet不提供Set接口之上的任何实例方法,不使用此解决方案的唯一原因是EnumSet类型对于文档目的很有用,并且在将它包装到Set中时会丢失。 除此之外,将保留EnumSet行为。