Я программирую игру на Java, которая состоит из сетки плиток.Я не хочу иметь возможности определять края плиток и то, как они связаны друг с другом, например, чтобы получить противоположный край плитки, я хочу просто набрать TOP.opposite()
.Тем не менее, при использовании перечислений для определения этих ребер, мне приходится в конечном итоге ссылаться как минимум на два из них в contstructor:
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;
}
}
Есть ли способ обойти эту проблему, используя перечисления, которые так же просто