如果在接口中声明注释时将注释与方法关联,我们是否可以在实现类中强制存在注释?
这是关于在Java中使用注释。 我在一个方法中将一个注释与一个方法相关联,同时在界面中声明它。 在实现时,如何确保注释与@Override注释一起使用,如果没有,它应该抛出编译错误?
谢谢。
你不能。
您需要编写一些代码来执行此操作(在您的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
)保留策略,即它在运行时不可用。
你不能在编译器中强制执行此操作,不。 在查找给定类的注释时,使用这些注释检查所有超类和接口的工具是工作。
例如,Spring的AnnotationsUtils
需要一个类来检查注释,并遍历其遍历树寻找它们,因为编译器和JVM不会为你做这件事。
- Rhino和并发访问javax.script.ScriptEngine
- 签署使用maven-assembly插件创建的jar文件
- 如何在所有缩放级别实时准确地绘制大数据向量?
- 如何以正确的顺序生成自动化的客户端 – 服务器Java网络代码输出?
- 需要一些帮助才能理解Anotations – Spring annotations
- rich dataTable不能将迭代变量用于嵌套循环
- 禁用时Java断言的性能拖累
- com.datastax.driver.core.exceptions.InvalidQueryException:unconfigured table schema_keyspaces
- 从perl调用java类