title: Why does <T extends Enum<T> & SomeInterface> compile, but not <T extends SomeInterface & Enum<T>>?
body: <p>I can't understand why the method2 does not compile whereas method1 does compile.
  I am using Eclipse with JavaSE 1.7 and I got the following error on method2:</p>
  
  <blockquote>
    <p>Multiple markers at this line</p>
    
    <ul>
    <li><p>The type Enum&lt;T> is not an interface; it cannot be specified as a bounded parameter</p></li>
    <li><p>Bound mismatch: The type T is not a valid substitute for the bounded parameter &lt;E extends Enum&lt;E>> of    the type Enum&lt;E></p></li>
    </ul>
  </blockquote>
  
  <pre><code>public class Test {
  
      public interface SomeInterface {
  
      }
  
      public static &lt;T extends Enum&lt;T&gt; &amp; SomeInterface&gt; T method1() {
          return null;
      }
  
      public static &lt;T extends SomeInterface &amp; Enum&lt;T&gt;&gt; T method2() {
          return null;
      }
  }
  </code></pre>