Это расценивает использование аннотаций в Java. Я связал аннотацию с методом при объявлении этого в интерфейсе. При реализации, как я могу удостовериться, что аннотацию несут наряду с @Override аннотацией и в противном случае она должна бросить ошибку компиляции?
Спасибо.
Ты не можешь.
Для этого нужно написать код (либо на время загрузки приложения, либо с помощью apt)
У меня был такой же сценарий, и я создал свою собственную аннотацию:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface DependsOn {
Class<? extends Annotation>[] value();
/**
* Specifies whether all dependencies are required (default),
* or any one of them suffices
*/
boolean all() default true;
}
и применил ее к другим аннотациям, как:
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.TYPE)
@DependsOn(value={Override.class})
public @interface CustomAnnotation {
}
Imporant: имейте в виду, что @Override
имеет время компиляции (SOURCE
) политики удержания, т.е. он не доступен во время выполнения.
Вы не можете применить это в компиляторе, нет. Это работа инструментов, которые используют эти аннотации для проверки всех суперклассов и интерфейсов при поиске аннотаций для данного класса.
Например, Spring's AnnotationsUtils
берет класс для проверки на наличие аннотаций и ползает по всему дереву наследования в поисках их, потому что компилятор и JVM не делают этого за вас.