Re: [問題] 如何讓enum成為另一個enum的建構參數?
我不是很確定你所想要的需求是什麼
不同的需求, 架構寫法會有所不同
這是大略猜想你所說的
粗略寫一個樣子, 和簡單的測試
import java.util.*;
enum Role {
Citizen(1), Guard(2), King(3), Queen(4), Slime(5), Mouse(6);
private int roleID = -1;
Role(int id) { roleID = id; }
public int getID() { return roleID; }
} //{END enum} Role
enum GameMode {
Practice(Role.Guard, Role.Slime),
Competition(Role.Citizen, Role.Guard, Role.Slime, Role.King, Role.Queen);
private List<Role> MEMBERS;
GameMode(Role... roles) {
MEMBERS = Collections.unmodifiableList(Arrays.asList(roles));
} //{END constructor}
public List<Role> getRoles() { return MEMBERS; }
} //{END enum} GameMode
class GameWorld {
public static void main(String[] args) {
GameMode mode1 = GameMode.Practice;
GameMode mode2 = GameMode.Competition;
show(mode2);
System.out.println("take a break ...");
show(mode1);
System.out.println("about mode11 ...");
GameMode mode11 = GameMode.Practice;
List<Role> testList = mode11.getRoles();
try {
// Try to add a "Mouse" role
testList.add(Role.Mouse);
} catch(UnsupportedOperationException uoe) {
System.out.println("invalid operation is detected.");
}
show(mode11);
} //{END main}
static void show(GameMode m) {
switch (m) {
case Practice:
System.out.println("This is Practice"); break;
case Competition:
System.out.println("This is Competition"); break;
}
for(Role r: m.getRoles()) {
System.out.println("role: "+ r.toString() + " id:"+r.getID());
}
} //{END} show()
} //{END class} GameWorld
--
※ 發信站 :批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.149
※ 編輯: AI3767 來自: 140.123.105.149 (10/14 00:40)
推
10/14 22:48, , 1F
10/14 22:48, 1F
討論串 (同標題文章)