title: Annotation attributes with type parameters
body: <p>When you define a Java interface, it's possible to declare a method with type parameters, for example like this:</p>
  
  <pre><code>public interface ExampleInterface {
      &lt;E extends Enum&lt;E&gt;&gt; Class&lt;E&gt; options();
  }
  </code></pre>
  
  <p>The same thing does not work in an annotation. This, for example, is illegal:</p>
  
  <pre><code>public @interface ExampleAnnotation {
      &lt;E extends Enum&lt;E&gt;&gt; Class&lt;E&gt; options();
  }
  </code></pre>
  
  <p>I can get what I'm after by using the raw type <code>Enum</code>:</p>
  
  <pre><code>public @interface ExampleAnnotation {
      @SuppressWarnings("rawtypes")
      Class&lt;? extends Enum&gt; options();
  }
  </code></pre>
  
  <p>What exactly is the reason why it is not possible to declare annotation attributes with type parameters?</p>