Предположим, у меня есть этот интерфейс:
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.
Я что-то не так делаю?Разве это не разрешено?Мне не повезло?