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

Vik*_*dor 5 java annotations

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

谢谢.

Boz*_*zho 1

你不能。

您需要编写一些代码来执行此操作(在您的应用程序加载时间上或使用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;
}
Run Code Online (Sandbox Code Playgroud)

并将其应用于其他注释,例如:

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

重要提示:请记住,它@Override具有编译时 ( SOURCE) 保留策略,即它在运行时不可用。