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