主要作用

  • 生成文档,这是最常见的,也是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

参考资料

http://linbinghe.com/2017/ac8515d0.html

results matching ""

    No results matching ""