是否有Java 7中的ImmutableEnumSet计划?

Ale*_*yak 25 java collections enums java-7

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

Col*_*ert 29

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


资源:

  • 我想知道这个公共的ImmutableEnumSet类型有什么好处? (4认同)
  • 番石榴将成为一个很棒的图书馆.这个岩石!+1 (2认同)
  • 如果`Sets.immutableEnumSet`会返回一个公共`ImmutableEnumSet`类,而不仅仅是`ImmutableSet`,它会接受它.虽然我会尽力提出要求. (2认同)
  • @KevinBourrillion:一些公共方法,如补充或 getUniverse? (2认同)

ska*_*man 12

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

没错,原始版本EnumSet仍然是可变的,但只要您丢弃原始引用,它就像包装器中的不可变一样好.

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

  • 它没有"EnumSet"的所有方法 (4认同)
  • @seanizer:这不是真的,在集合框架中有一些先例,用于特定于类的方法,不会破坏接口,例如`ArrayList.ensureCapacity()` (2认同)
  • 如果你想创建一个补集,那么 `EnumSet.complementOf()` 需要一个 `EnumSet` 作为参数。 (2认同)