Java枚举是否可以合并(如C#中的按位)?

Java枚举是否可以合并(如C#中的按位)?,java,enums,Java,Enums,Java中有没有一种方法可以声明一个枚举,它的值可以一起使用?例如: enum FileAccess { Read, Write, ReadWrite } 是否可以将ReadWrite定义为Read | Write(或任何可以产生相同结果的内容)?您使用: EnumSet readWrite=EnumSet.of(FileAccess.Read,FileAccess.Write); 事实上,这比C#/.NET方式更为优雅,IMO-除了其他之外,您可以轻松区分集合和单个值。请参阅哪种方式可以有

Java中有没有一种方法可以声明一个枚举,它的值可以一起使用?例如:

enum FileAccess { Read, Write, ReadWrite }
是否可以将ReadWrite定义为
Read | Write
(或任何可以产生相同结果的内容)?

您使用:

EnumSet readWrite=EnumSet.of(FileAccess.Read,FileAccess.Write);
事实上,这比C#/.NET方式更为优雅,IMO-除了其他之外,您可以轻松区分集合和单个值。

请参阅哪种方式可以有效地执行此操作:

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

您能解释一下如何使用此枚举集生成读/写常量吗?完全按照我所展示的方式-将其作为最终变量即可。EnumSet是不可变的。但这会为您提供一个集合,而不是一个Enum,或者实际上是一个可以存储在数据库中的整数(如Enum.ordinal())。如果您需要外部(DB)表示,则裸枚举是不可接受的——出于维护原因,使用序号是一个坏主意。将外部表示添加到枚举后,在枚举集周围添加一个包装器,以在两个方向上管理组合的外部表示。感谢Darron,这总结了我要查找的内容。
EnumSet<FileAccess> set = EnumSet.of(READ, WRITE);