是否有Java 7中的ImmutableEnumSet计划?
我想拥有EnumSet的所有效率并传递它,而不必担心有人会修改它。
您可以使用Google集合(Guava)获取不可变的EnumSet。
资源:
- 番石榴主页
- Google集合bug跟踪器 – 不可变枚举集便利构造函数
- Google文档 – Sets.immutableEnumSet()
Collections.unmodifiableSet()
包装EnumSet
什么问题?
没错,原始的EnumSet
仍然是可变的,但只要你丢弃原始引用,它就和包装器中的不可变一样好。
编辑:好的,因为EnumSet
不提供Set
接口之上的任何实例方法,不使用此解决方案的唯一原因是EnumSet
类型对于文档目的很有用,并且在将它包装到Set
中时会丢失。 除此之外,将保留EnumSet
行为。