在Java中使用Enum的序号值来索引数组是不是不好的做法?
我有两个阵列:墙和邻居。
public boolean[] walls = new boolean[4];
public Cell[] neighbors = new Cell[4];
我有一个枚举:
enum Dir
{
North,
South,
East,
West
}
现在,我希望能够按照墙壁或邻居的方向访问它们,这样我就不必传递一堆魔法索引。
但是,当我阅读Enum.ordinal()的文档时,它说程序员对这种方法几乎没有用处,这让我认为它不应该以这种方式使用。
我正在考虑做这样的事情:
List<Dir> availableDirections = new ArrayList<Dir>();
for(Dir direction : Dir.values())
if (!Neighbors[direction.ordinal()].Visited)
availableDirections.add(direction);
甚至:
return Neighbors[Dir.North.ordinal()];
我应该恢复对 NORTH、SOUTH、EAST、WEST 使用静态常量并设置索引值还是使用 Enum 的序数方法?