我想拥有EnumSet的所有效率并传递它,而不必担心会有人修改它。
答案 0 :(得分:29)
您可以使用Google集合(Guava)获取不可变的EnumSet。
资源:
答案 1 :(得分:11)
Collections.unmodifiableSet()
包裹EnumSet
有什么问题?
是的,原始的EnumSet
仍然是可变的,但只要您丢弃原始引用,它就像包装器中的不可变一样好。
编辑:好的,由于EnumSet
不提供Set
接口之外的任何实例方法,因此不使用此解决方案的唯一原因是{ {1}}类型对于文档目的很有用,并且在将其包装在EnumSet
中时会丢失。除此之外,将保留Set
行为。