이제 간단 해 보일지 모르겠지만 약간 섞여 있습니다. 내 응용 프로그램에서 메뉴를 만들려고합니다. 특정 조건에 따라 메뉴의 일부 옵션이 활성화/비활성화됩니다. 콘솔 기반이기 때문에 사용자가 사용할 수있는 메뉴의 각 "상태"에 대해 지정하려고합니다.enum에 개체를 연결하는 방법은 무엇입니까?
예 :
EMPTY_STATE
는 ADD_COMMAND, REMOVE_COMMAND, QUIT_COMMAND
FULL_STATE
있음 ADD_COMMAND, VIEW_COMMAND, REMOVE_COMMAND, QUIT_COMMAND
나는 쉽게 더 상태를 추가하고 사용할 수있는 명령을 사용자 정의 할 수 있습니다 가능성의 의미로 유연하게 내 응용 프로그램을하고 싶습니다 . 그게 내가 취한 행동인지를 알기 위해서 칼럼을 쓰는 것을 피하고 싶다는 뜻입니다.
각 상태마다 다른 명령이 있기 때문에 나는 이라는 이름의 State
을 생성하는 것을 생각했습니다. 또한 Commands
이라는 ENUM
을 만들었습니다. 여기에는 응용 프로그램을 사용할 때 사용자가 수행 할 수있는 모든 명령이 포함되어 있습니다.
내 기본 개념은 간단했다 :
이EMPTY_STATE(Commands.ADD_COMMAND,Commands.REMOVE_COMMAND,Commands.QUIT_COMMAND)
은 따라서, 국가 countains 명령 및 명령은 ("-add") 명령 접두어의 캐릭터 그들의 라벨, 다음
하지만를 countains, 국가는 많은 명령을 쓸 수 있으며 이것이 문제입니다. 내가하고 ENUM
에서 각각의 경우에 대한 생성자를하고 싶지 않아 할 수 없기 때문에, 나는 그것을 만드는 모든 명령을 countain 것 ArrayList에 사용에 대한 생각 :
EMPTY_STATE(Arraylist array = commands) <-- Just the idea
을 그리고 내 질문이가는 곳이다 문서에서 알 수 있듯이, arraylist는 매개 변수로 인턴 콘텐츠를 할당 할 수 있습니다.
깨끗하고 관리하기 쉽게 구성해야하는 방법에 대한 제안 사항이 있습니까?
좋은 생각이지만 enumSet 내부에서 열거 형 값에 쉽게 도달 할 수없는 방식을 좋아하지 않습니다. (확인되었지만 get() 등가물을 찾지 못했습니다. for 루프 검증을 수행해야합니다. 원래의 Enum 값을 매번 사용합니다. 만약 내가 1000 개의 명령이나 상태를 가지고 있다면, 문제가있을 것입니다 ... –
기다려주세요, 왜 그냥 for-each 루프를 사용하지 않으시겠습니까?'for (Command c : state.associatedEnumSet()) {무엇이든 할 ...}' –