Я хочу получить всю эффективность EnumSet и передать его, не беспокоясь о том, что кто-то изменит его.
Есть ли планы по ImmutableEnumSet в Java 7?
Ответ 1
Вы можете получить неизменяемый набор EnumSet с коллекциями Google (Guava).
Ресурсы:
Ответ 2
Что случилось с Collections.unmodifiableSet()
обертыванием EnumSet
?
Правда, исходный EnumSet
по-прежнему изменен, но до тех пор, пока вы отбрасываете исходную ссылку, она не должна быть неизменной внутри обертки.
изменить: ОК, поскольку EnumSet
не предлагает каких-либо методов экземпляра поверх интерфейса Set
, единственная причина, по которой не использовать это решение, заключается в том, что тип EnumSet
полезно для целей документации, и вы теряете это при обертке в Set
. Кроме того, поведение EnumSet
будет сохранено.