主要作用
生成文档,这是最常见的,也是java最早提供的注解。常用的有@see、@param、@return等
跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量;
在编译时进行格式检查。如@override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。
特性
- 注解不能包含extends子句,所有注解自动扩展Annotation接口
- 注解本身也可以被注解
- 局部变量声明的注解不能存储在.class文件中
- 一个注解不能继承另一个注解;
- 注解声明的所有方法都必须不带参数;
- 注解方法不能返回基本类型(如int或double)、String或Class类型的对象、枚举类型、其他注解类型;
- 当一个接口直接继承java.lang.annotation.Annotation接口时,仍是接口,而并非注解。要想自定义注解类型,只能通过@interface关键字的方式,其实通过该方式会隐式地继承.Annotation接口
- 只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型
异常和错误
- AnnotationTypeMismatchException:当注解经过编译(或序列化)后,注解类型改变的情况下,程序视图访问该注解所对应的元素,则抛出此异常。
- IncompleteAnnotationException:当注解经过编译(或序列化)后,将其添加到注解类型定义的情况下,程序视图访问该注解所对应的元素,则抛出此异常。
- AnnotationFormatError:当注解解析器试图从类文件中读取注解并确定注解出现异常时,抛出该错误。
标记注解
标记注解是特殊类型的注解,其中不包含成员;isAnnotationPresent该方法可以确定是否标记注解;
类型注解
内置注解
重复注解
@Repeatable ##重复注解
重点
AnnotatedElement
参考资料