如果在接口中声明注释时将注释与方法关联,我们是否可以在实现类中强制存在注释?

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

谢谢。

你不能。

您需要编写一些代码来执行此操作(在您的applciation加载时间或使用apt

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

@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface DependsOn { Class[] 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的AnnotationsUtils需要一个类来检查注释,并遍历其遍历树寻找它们,因为编译器和JVM不会为你做这件事。