Je suis en train de programmer un jeu en java qui est constitué d'une grille de tuiles. Je veux pouvoir définir de manière intuitive les bords des tuiles et la manière dont ils se rapportent les uns aux autres, par exemple, pour obtenir le bord opposé d'une tuile, je veux pouvoir simplement taper TOP.opposite()
. Cependant, lorsque j'utilise des enums pour définir ces bords, je finis par devoir faire référence à au moins deux d'entre eux dans le contstructeur :
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;
}
}
Existe-t-il un moyen de contourner ce problème en utilisant les enums de manière tout aussi simple ?