java基础之注解

注解

java5开始提供的一个语法,用于为程序添加附加功能。注解就是利用反射API进行解析处理的。

注解的使用:

  • 1.定义注解
  • 2.在类上标注注解
  • 3.在软件运行期间利用反射API,查找类上的注解,根据注解添加附加功能。

案例:
Junit原型:动态执行一个测试类中,使用@Test标注的方法。

解析注解

  • 利用反射API,查找标注在类、方法、属性上的注解。
  1. 加载类
    2.找到全部方法
    3.在方法上调用getDeclaredAnnotations()

元注解

@ Retention

用来定义该注解在哪一个级别可用,在源代码中(SOURCE)、类文件中(CLASS)或者运行时(RUNTIME)。

@Documented@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
  RetentionPolicy value();
}
public enum RetentionPolicy {
  //此注解类型的信息只会记录在源文件中,编译时将被编译器丢弃,也就是说
  //不会保存在编译好的类信息中
  SOURCE,
  //编译器将注解记录在类文件中,但不会加载到JVM中。如果一个注解声明没指定范围,则系统
  //默认值就是Class
  CLASS,
  //注解信息会保留在源文件、类文件中,在执行的时也加载到Java的JVM中,因此可以反射性的读取。
  RUNTIME
}


RetentionPolicy 是一个枚举类型,它定义了被 @Retention 修饰的注解所支持的保留级别:

@Documented

@Documented:生成文档信息的时候保留注解,对类作辅助说明

@Target

@Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
ElementType 是一个枚举类型,它定义了被 @Target 修饰的注解可以应用的范围:

@Inherited(很少使用)

@Inherited:说明子类可以继承父类中的该注解
表示自动继承注解类型。 如果注解类型声明中存在 @Inherited 元注解,则注解所修饰类的所有子类都将会继承此注解。

posted @ 2022-10-09 00:15  King-DA  阅读(18)  评论(0)    收藏  举报