25

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

4

2 回答 2

29

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


资源 :

于 2010-08-30T20:05:16.933 回答
12

Collections.unmodifiableSet()包装一个有什么问题EnumSet

诚然,EnumSet原始引用仍然是可变的,但只要您丢弃原始引用,它在包装器内就与不可变一样好。

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

于 2010-08-30T20:05:11.817 回答