title: Illegal Forward Reference and Enums
body: <p>I'm programming a game in java which is made up of a grid of tiles. I wan't to be able to inuitively define the edges of the tiles and how they relate to each other, e.g. to get the opposite edge of a tile, I want to be able to just type <code>TOP.opposite()</code>. However, when using enums to define these edges I end up having to forward reference at least two of them in the contstructor:</p>
  
  <pre><code>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;
     }
  }
  </code></pre>
  
  <p>Is there any way of getting round this problem using enums which is just as simple?</p>