1.Java使用接口Annotation来描述注解。使用AnnotatedElement来获取Annotation
其他注解不能继承该接口(直接报错)。
可以使用接口继承,单继承后只能是普通接口,不再是注解。
jvm在编译后自动为注解加上继承Annotation,可以使用javap反编译查看
2.元注解(注解其他注解的注解)
Target :注解位置 值为ElementType枚举的实例。如 类、方法等
Retention:注解存活期 值为RetentionPolicy枚举的实例,有SOURCE、CLASS、RUNTIME三种
Documented:被该注解标注的注解会到处到文档
Inherited:假如被该注解标注的注解是AnnotationTest,被@AnnotationTest注解的类是ClassA,ClassB继承ClassA。则ClassB自动拥有注解@AnnotationTest,即使ClassB没有被@AnnotationTest修饰
Repeatable:jdk1.8新增,可重复注解
Native:jdk1.8新增,本地方法
3.Java原生注解
SuppressWarnings:类型警告
FunctionalInterface:jdk1.8新增,函数式接口
Override:复写
SafeVarargs:安全检查
4.注解用途:
注解不属于代码,只是用来标注代码
在框架中可以使用注解来实现特定功能,比如Junit中的@Test,Spring中的@ComponentScan等
参考:
Spring 注解编程之注解属性别名与覆盖