Что не так с Collections.unmodifiableSet()
обёртыванием EnumSet
?
Правда, оригинал EnumSet
всё ещё изменчив, но пока вы отбрасываете исходную ссылку, он так же хорош, как и неизменный внутри обёртки.
edit: OK, поскольку EnumSet
не предлагает каких-либо методов экземпляров сверх интерфейса Set
, единственная причина неиспользования этого решения заключается в том, что EnumSet
type полезен для целей документирования, и вы теряете его при переносе в Set
.Кроме этого, поведение EnumSet
будет сохранено.