这是关于在Java中使用注释。我在一个方法中将一个注释与一个方法相关联,同时在界面中声明它。在实现时,如何确保注释与@Override注释一起使用,如果没有,它应该抛出编译错误?
感谢。
答案 0 :(得分:1)
你不能在编译器中强制执行此操作,不。在查找给定类的注释时,使用这些注释检查所有超类和接口的工具是工作。
例如,Spring的AnnotationsUtils
需要一个类来检查注释,并遍历其继承树寻找它们,因为编译器和JVM不会为你做这个。
答案 1 :(得分:1)
你不能。
您需要编写一些代码来执行此操作(在您的applciation加载时间或使用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
)保留策略,即在运行时无法使用。