Можно ли объединить 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);