Можно ли объединить Java-перечисления (например, побитовое в С#)?

Есть ли способ в Java объявить перечисление, значения которого могут использоваться вместе? Например:

enum FileAccess { Read, Write, ReadWrite }

Можно ли определить ReadWrite как Read | Write (или что-нибудь, что даст тот же результат)?

Ответы

Ответ 1

Вы используете EnumSet:

EnumSet<FileAccess> readWrite = EnumSet.of(FileAccess.Read, FileAccess.Write);

Это на самом деле несколько более элегантно, чем способ С#/. NET, IMO - помимо всего прочего вы можете легко отличить набор от одного значения.

Ответ 2

Смотрите EnumSet, который позволяет вам делать это эффективно:

EnumSet<FileAccess> set = EnumSet.of(READ, WRITE);