Java规定初始值的序数为0。我可以假设当我创建一个枚举时,它是这样的:
public enum Direction {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, ...}
星期二TUESDAY
的序数始终为1,星期三WEDNESDAY
的序数始终为2,...
我会更具体一些。我正在声明一个枚举:
public enum Direction {UP,RIGHT,DOWN,LEFT}
现在有一种方法可以将内容旋转90度(顺时针)。使用序数可以实现一行代码:
direction = Direction.values()[direction.ordinal()+1 % Direction.values().length];
如果我不使用顺序,我将不得不使用开关语句或条件语句:
switch (direction) {
case LEFT:newdirection = Direction.UP;
break;
etc...
}
使用序数有一些优点:
- 代码更短
- 代码执行速度更快(可以忽略不计)
- 如果添加了一个方向(例如
DOWN_LEFT
),实现不一定需要改变,只需将新方向放在正确的位置即可
您认为呢?
EnumMap<Direction, Integer>
或给Direction
添加一个int
字段即可。 - Mark Peters