我很快就會顯示我想在「最清晰」的方式來實現的:實現響應式定位枚舉的最簡單方法是什麼? java的
public enum Orientation {
NORTH, WEST, SOUTH, EAST }
public enum Turn {
LEFT, RIGHT }
所以,我想這兩個枚舉做的是安全,高效地查找改變的方向根據招:
Orientation orient = Orientation.NORTH;
// orient points to NORTH now
orient = orient.turn(Turn.LEFT);
// orient points to WEST now
我試圖做到這一點的第一種方式是通過創建一個映射:
EnumMap<Orientation, EnumMap<Turn, Orientation>>
而且所有的方向,靜態映射,但日在是map.get.put.get的大塊....而且可能是一個有點太過量,altough造成這種預期的效果:
directionMap.get(NORTH).get(LEFT)
// the value would then be WEST
我去下一個方法是通過一個指南針類將所有方向鏈接成一個圓圈..像鏈接電路清單一樣工作... < - > NORTH < - > EAST < - > SOUTH < - > WEST < - > NORTH < - > ...因此,Compass可以有一個靜態函數,可以調用該鏈接列表中的任何成員向左或向右步進,導致正確的方向改變。但是代碼並沒有按照我想要的方式運行。
所以我的問題到底是不是有人有這樣的代碼的經驗,或者有一個想法如何以一個很好的消除方式實現所需的結果?
我不確定我是否理解。你問我們如何在Orientation枚舉中實現turn()方法嗎? – 2015-03-13 19:39:29
我正在問如何以一種很好和非冗餘的方式實現這樣的方法的想法(你可以寫一個開關的情況下,但這將是不好的冗餘方面,因爲例如WEST.turn(左)將總是導致相同的方向,即南) – Jan 2015-03-13 19:43:59
@Jan你真的需要一個枚舉'轉'嗎?我的意思是,它只能是'LEFT'或'RIGHT'/ – 2015-03-13 19:46:03