JavaTutorial

注解

注解,是Java语言的一种高级特性。

之前的课程中讲过,可以用public关键字来控制一个字段能否被其他方法访问。在Java语言中,还有另外一些关键字来控制数据的并发特性。 添加这些关键字的时候,不需要更改原有的定义,只需要添加相应的保留字。如果运行环境多一项功能,就要划定几个关键字,可想而知最后会有多少不能用作变量名的保留字。 因此,Java语言开放了注解功能

后面讲到的JDBC(Spring 框架)会识别预先定义的注解,通过注解来扩展 Java 语言,比如识别数据库的列格式。

以下是注解的示例:

public @interface myAnnotation {
  String[] stringlist;
  SubAnnotation subAnno;
}

public @interface SubAnnotation {
  int value;
}

@myAnnotation
public class Application {
  
  Application(){
  
  }
  
  run(String name){
    System.out.println(name + "run");
  }
}

注解的结构

注解只能接受一系列字段,而字段的类型可以为以下类型之一:

使用注解

如果注解没有参数,只用注解名就可以调用注解

@TagAnnotation
interface Race{
  
}
@myAnnotation(
  stringlist = {"bit","nku","buaa"},
  subAnno = @SubAnnotation("tju")
)
interface University{

}
@SubAnnotation("demo")
interface Suburb{

}

注解的位置和 Target 元注解

注解只能依附在以下的位置: | 注解的位置 | Target | | :——-: | :—-: | | 其他注解 | ANNOTATION | | 构造函数 | CONSTRUCTOR | | 字段 | FIELD | | 局部变量 | LOCAL_VARIABLE | | 方法 | METHOD | | 包 | PACKAGE | | 方法或构造函数的参数 | PARAMETER | | 类定义,接口定义 | TYPE | | 泛型的类型参数 | TYPE_PARAMETER | | 定义变量或者参数时,注解依附在参数类型前 | TYPE_USE |

包注解

包注解只能在package语句下定义

@PackageAnno package cn.edu

注解保留策略和 RententionPolicy 元注解

注解与 AOP