Когда вы определяете интерфейс Java, можно объявить метод с параметрами типа, например, следующим образом:
public interface ExampleInterface {
<E extends Enum<E>> Class<E> options();
}
То же самое не работает в аннотации. Это, например, является незаконным:
public @interface ExampleAnnotation {
<E extends Enum<E>> Class<E> options();
}
Я могу получить то, что мне нужно, используя исходный тип Enum
:
public @interface ExampleAnnotation {
@SuppressWarnings("rawtypes")
Class<? extends Enum> options();
}
В чем именно причина, по которой невозможно объявить атрибуты аннотаций с параметрами типа?