現在聽起來很簡單,但我有點混淆。我正在嘗試在我的應用程序中創建一個菜單。根據特定條件,菜單的某些選項將被啓用/禁用。由於它是基於控制檯的,我還希望爲菜單的每個「狀態」指定哪些命令可供用戶使用。如何將一些或多個對象附加到枚舉?
例子:
EMPTY_STATE
有ADD_COMMAND, REMOVE_COMMAND, QUIT_COMMAND
FULL_STATE
有ADD_COMMAND, VIEW_COMMAND, REMOVE_COMMAND, QUIT_COMMAND
我想我的應用程序,以儘可能的意思,我可以輕鬆地添加更多的國家和定製,可以使用的命令靈活。這意味着我想避免做if的列以知道這是採取的行動。
由於每個州都有不同的命令,所以我想創建一個名爲State
的ENUM
,它可以計算出這些不同的狀態。我還創建了ENUM
,名爲Commands
,其中包含用戶在使用我的應用程序時可以執行的所有可能的命令。
我的基本想法是簡單的:
EMPTY_STATE(Commands.ADD_COMMAND,Commands.REMOVE_COMMAND,Commands.QUIT_COMMAND)
因此,國家countains命令和命令countains他們的標籤,這是命令前綴的字符串( 「-add」)
但隨後,各國可以數不勝數的命令,這就是問題所在。既然不能和不想在ENUM
每種情況下做一個構造函數,我想過使用,將countain所有命令一個ArrayList,使其:
EMPTY_STATE(Arraylist array = commands) <-- Just the idea
而這正是我的問題去如文檔所述,數組列表可以通過參數中的集合來分配其實體內容。
我可以提供一些建議,說明我應該如何構造它,使其易於管理?
一個好主意,但我不喜歡我不能輕易達到enumSet中枚舉值的方式(已檢查但未找到任何get()等價物。我不得不使用for循環驗證如果我有1000個命令或狀態,將會出現問題... – 2012-02-06 01:31:28
等待,什麼?爲什麼你不使用標準for-each循環?for(Command c:state.associatedEnumSet ()){做任何事情}} – 2012-02-06 02:35:46