Java 注解总结

来源:互联网 发布:2016小说改编的网络剧 编辑:程序博客网 时间:2024/05/18 21:10
一、注解定义

注解早在J2SE1.5就被引入到Java中,主要提供一种机制,这种机制允许程序员在编写代码的同时可以直接编写元数据。

 

二、元注解

  • Target                   说明了被修饰的注解的应用范围,也就是被修饰的注解可以用来注解哪些程序元素
  • Retention              表示一个注解类型会被保留到什么时候
  • Inherited               表明被修饰的注解类型是自动继承的。具体解释如下:若一个注解类型被Inherited元注解所修饰,则当用户在一个类声明中查询该注解类型时,若发现这个类声明中不包含这个注解类型,则会自动在这个类的父类中查询相应的注解类型,这个过程会被重复,直到该注解类型被找到或是查找完了Object类还未找到。
  • Documented         当一个注解类型被@Documented元注解所描述时,那么无论在哪里使用这个注解,都会被Javadoc工具文档化。
  • Repeatable          说明该注解标识的注解可以多次使用到同一个元素的声明上。

 

三、Target

ElementType枚举类中的常量

  • ANNOTATION_TYPE             表示该注解可以应用到其他注解上
  • CONSTRUCTOR              表示可以使用到构造器上
  • FIELD                                    表示可以使用到域或属性上
  • LOCAL_VARIABLE                表示可以使用到局部变量上。
  • METHOD                               可以使用到方法级别的注解上。
  • PACKAGE                              可以使用到包声明上。
  • PARAMETER                         可以使用到方法的参数上
  • TYPE                                     类、接口(包括注解类型)或enum声明
  • TYPE_USE                           注释所有类型的使用
  • TYPE_PARAMETER             在通用类,接口,方法等中注释类型参数

 

四、Retention

RetentionPolicy枚举类中的常量

  • SOURCE                               表明这个注解会被编译器忽略,并只会保留在源代码中。
  • CLASS                                  表明这个注解会通过编译驻留在CLASS文件,但会被JVM在运行时忽略,正因为如此,其在运行时不可见。
  • RUNTIME                             表示这个注解会被JVM获取,并在运行时通过反射获取。

 

五、常见内建注解

@Override

@SuppressWarnings

@Deprecated

@FunctionalInterface

 

六、自定义注解

@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Inheritedpublic @interface MethodInfo {    String author() default "mk";    String date();    int version() default 1;}