Java 如何将一些或多个对象附加到枚举?

Java 如何将一些或多个对象附加到枚举?,java,arrays,enums,Java,Arrays,Enums,这听起来很简单,但我有点糊涂了。我正在尝试在我的应用程序中创建菜单。根据特定条件,菜单的某些选项将被启用/禁用。由于它是基于控制台的,我还想为菜单的每个“状态”指定哪些命令可供用户使用 例如: 空\u状态具有添加\u命令、删除\u命令、退出\u命令 FULL\u状态具有ADD\u命令、VIEW\u命令、REMOVE\u命令、QUIT\u命令 我希望我的应用程序尽可能灵活,这意味着我可以轻松地添加更多状态并自定义可以使用的命令。这意味着我想避免做if的专栏,以了解这是采取的行动 由于每个州都有不同

这听起来很简单,但我有点糊涂了。我正在尝试在我的应用程序中创建菜单。根据特定条件,菜单的某些选项将被启用/禁用。由于它是基于控制台的,我还想为菜单的每个“状态”指定哪些命令可供用户使用

例如:

空\u状态
具有
添加\u命令、删除\u命令、退出\u命令

FULL\u状态
具有
ADD\u命令、VIEW\u命令、REMOVE\u命令、QUIT\u命令

我希望我的应用程序尽可能灵活,这意味着我可以轻松地添加更多状态并自定义可以使用的命令。这意味着我想避免做if的专栏,以了解这是采取的行动

由于每个州都有不同的命令,我想创建一个名为
state
ENUM
来统计这些不同的州。我还创建了一个名为
Commands
ENUM
,其中包含了用户在使用我的应用程序时可以执行的所有可能的命令

我的基本想法很简单:

EMPTY_STATE(Commands.ADD_COMMAND,Commands.REMOVE_COMMAND,Commands.QUIT_COMMAND)
所以,State对命令进行计数,命令对其标签进行计数,标签是一个命令前缀字符串(“-add”)

但是,国家可以计算许多命令,这就是问题所在。由于我不能也不想为
ENUM
中的每种情况都创建构造函数,因此我考虑使用一个ArrayList对所有命令进行计数,使其:

EMPTY_STATE(Arraylist array = commands) <-- Just the idea

EMPTY_STATE(Arraylist array=commands)存储每个状态的可用命令有什么不对?
毕竟,你必须在某个地方定义它

对于每个状态枚举,可以将可用命令的枚举集传递给构造函数,如下所示:

SOME_STATE( EnumSet.of(Command.A, Command.B)),
OTHER_STATE( EnumSet.of(Command.A, Command.C))
...

或者,您可以为每个命令指定其可用状态。

这是个好主意,但我不喜欢这样的方式,即无法轻松获取枚举集中的枚举值(选中但未找到任何get()等效。我每次都被迫对原始枚举值进行for循环验证。如果我有1000个命令或状态,就会出现问题…等等,什么?为什么不为每个循环使用一个标准?
for(命令c:state.associatedEnumSet()){do what…}