我很快就会显示我想在“最清晰”的方式来实现的:实现响应式定位枚举的最简单方法是什么? 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