Я программирую игру в java, которая состоит из сетки плиток. Я не смог бы интуитивно определить края плиток и как они связаны друг с другом, например. чтобы получить противоположный край плитки, я хочу иметь возможность просто набрать TOP.opposite()
. Однако при использовании перечислений для определения этих ребер мне приходится пересылать ссылку по крайней мере из двух из них в контрструкторе:
public enum Edge {
TOP(Edge.BOTTOM), //illegal forward reference
BOTTOM(Edge.TOP),
LEFT(Edge.RIGHT), //illegal forward reference
RIGHT(Edge.LEFT);
private Edge opposite;
private Edge(Edge opp){
this.opposite = opp;
}
public Edge opposite(){
return this.opposite;
}
}
Есть ли способ обойти эту проблему, используя перечисления, которые так же просты?