title: Use a static field defined in an enum as an argument in the constructor
body: <p>I have an enum and want to use a static value as the argument in the constructor.</p>
  
  <pre><code>public enum Enum
  {
      e1(0),
      e2(1),
      e3(SPECIAL_VALUE);
  
      static int SPECIAL_VALUE = -1;
  
      int value;
  
      private Enum(int value)
      {
          this.value = value;
      }
  }
  </code></pre>
  
  <p>In this example, <code>SPECIAL_VALUE</code> is accessed before it is initialized, so this clearly doesn't work.  I was wondering if there was a common solution.  Or a reason why I shouldn't need to do this.</p>
  
  <p>NOTE: There's probably a duplicate out there somewhere, but everything I can find has to do with using a static field in the body of the constructor, not as an argument, and I don't think the solutions presented there are applicable.  </p>