Возможны аннотации Java с введенным параметром класса?

Позвольте нам, предположил, что у меня есть этот интерфейс:

public interface MyInterface {
   void doStuff();
}

С конкретной реализацией:

public class HardCoreConcrete implements MyInterface {
   void doStuff() {
      // i really do stuff, honest
   }
}

И предположите, что у меня есть эта аннотация:

@Target(ElementType.class)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
   Class<MyInterface> clazz;
}

Это использовалось бы как это:

@MyAnnotation(clazz = HardCoreConcrete.class)
public class SomeOtherClass {
...
}

Почему это не работает? Мой компилятор жалуется, что для clazz ожидал, вводят MyInterface! Но HardCoreConcrete реализует MyInterface.

Я делаю что-то не так? Разве это не позволяется? Я не повезло?

11
задан AndrewF 21 July 2017 в 10:30
поделиться