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

标签 java arrays enums

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

示例:

EMPTY_STATE 具有 ADD_COMMAND、REMOVE_COMMAND、QUIT_COMMAND
FULL_STATEADD_COMMAND、VIEW_COMMAND、REMOVE_COMMAND、QUIT_COMMAND

我希望我的应用程序尽可能灵活,这意味着我可以轻松添加更多状态并自定义可以使用的命令。这意味着我想避免执行 if 列来了解所采取的操作。

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

我的基本想法很简单:

EMPTY_STATE(Commands.ADD_COMMAND,Commands.REMOVE_COMMAND,Commands.QUIT_COMMAND)

因此,状态计数命令,命令计数其标签,它是命令前缀(“-add”)的字符串

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

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

这就是我的问题所在。正如文档所说,数组列表可以在参数中采用集合来分配其实习生内容。

我可以提供一些关于如何构建它以使其干净且易于管理的建议吗?

最佳答案

存储每个状态的可用命令有什么问题? 毕竟,您必须在某处定义它。

您可以将可用命令的 EnumSet 传递给每个 State 枚举的构造函数,如下所示:

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

作为替代方案,您可以为每个命令指定其可用状态。

关于java - 如何将一些或多个对象附加到枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154215/

相关文章:

java - 对 Closable 对象正确使用 close() 和 = null

java - 在 gradle 中添加 abmob 依赖项后,android 应用程序崩溃

php - 在 Mysql 查询中使用数组值

java - 在java中创建一个数组,其中值随机排序

php - PDO fetchAll 数组到一维

java - "Java programming language type"的定义是什么

java - 如何找到一个元素?

c# - 从 C# 枚举中获取值

python - 如何使用字典和 google protobuf 枚举的类型提示?

c++ - 枚举类范围解析运算符