假設我想定義一個指向對象數組的枚舉。這可以做到嗎?在下面的代碼中,註釋掉的部分定義了一個指向單個對象的枚舉,並且工作正常,但是嘗試初始化對象數組的未註釋的代碼導致了一堆錯誤。在枚舉中初始化列表
public enum SightSensor{
/*NORTH (new MapLocation(0,1)),
SOUTH (new MapLocation(0,-1));
private final MapLocation loc;
SightSensor(MapLocation loc){
this.loc = loc;
}
public MapLocation getLoc(){
return loc;
}*/
NORTH ({new MapLocation(0,1), new MapLocation(0,2)}),
SOUTH ({new MapLocation(0,-1), new MapLocation(0,-2)});
private final MapLocation[] locs;
SightSensor(MapLocation[] locs){
this.locs = locs;
}
public MapLocation[] getLocs(){
return locs;
}
}
在相關說明中,假設我想定義兩個枚舉之間的固定映射:那麼最好的方法是什麼?地圖?哈希?準確地說,假設類似於上面的代碼,我想定義一個對象A,如果NORTH是一個不同的枚舉值A [NORTH]將返回所需的MapLocations列表。
沒有爲枚舉優化的地圖:[EnumMap的](http://docs.oracle.com/javase/6/docs/api/java/util/EnumMap.html) – Kapep 2012-01-02 03:37:34