Java 如果一个注释在接口中声明时与一个方法相关联,我们可以强制在实现类中存在注释吗?

Java 如果一个注释在接口中声明时与一个方法相关联,我们可以强制在实现类中存在注释吗?,java,annotations,Java,Annotations,这是关于Java中注释的使用。在接口中声明方法时,我将注释与方法相关联。在实现时,我如何确保注释与@Override注释一起进行,如果没有,它应该抛出编译错误 谢谢。您不能在编译器中强制执行此操作,不。在给定类上查找注释时,使用这些注释检查所有超类和接口的工具的工作就是这样 例如,Spring的AnnotationsUtils使用一个类来检查注释,并在其继承树上爬行寻找注释,因为编译器和JVM不会为您这样做。您不能 为此,您需要编写一些代码(在应用程序加载时,或者使用) 我有同样的场景,并创建了

这是关于Java中注释的使用。在接口中声明方法时,我将注释与方法相关联。在实现时,我如何确保注释与@Override注释一起进行,如果没有,它应该抛出编译错误


谢谢。

您不能在编译器中强制执行此操作,不。在给定类上查找注释时,使用这些注释检查所有超类和接口的工具的工作就是这样

例如,Spring的
AnnotationsUtils
使用一个类来检查注释,并在其继承树上爬行寻找注释,因为编译器和JVM不会为您这样做。

您不能

为此,您需要编写一些代码(在应用程序加载时,或者使用)

我有同样的场景,并创建了自己的注释:

@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;
}
重要事项:请记住,
@Override
有一个编译时(
SOURCE
)保留策略,即它在运行时不可用

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.TYPE)
@DependsOn(value={Override.class})
public @interface CustomAnnotation {
}