8.1 Java注解

  从JDK1.5开始,引入了源代码中的注解这一机制。注解使得Java源代码中不但可以包含功能性的实现代码,还可以添加元数据。注解看起来有点类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。

  在介绍注解的概念前,首先介绍元数据的概念。所谓元数据,就是描述数据的数据。举个例子来说,比如一张图片,图片的内容为主体数据,是需要展现给图片浏览者看到的信息,而图片的创建日期这类信息就是元数据,是用来描述图片内容这个数据的数据。

  元数据有什么用呢?还是以图片创建日期为例,假设现在想找一张2013年8月1日拍的照片,在计算机中就可以根据这个创建日期查找到该照片。再举一个之前已经接触过的与Java有关的案例,在编写Java注释的时候,如果按照某种特定的规范编写Java注释,则可以通过javadoc工具将这些注释自动生成帮助文档,这些按规定编写的Java注释就属于元数据,用来描述程序。我们可以用元数据来创建文档、跟踪代码的依赖性和执行编译时格式检查,并可以代替原系统中原有的配置文件。

  Java注解是Java代码里的特殊标记,为在代码中添加用Java程序无法表达的额外信息提供了一种形式化的方法,使我们可以在未来某个时刻方便地使用这些被注解修饰的程序元素(这些程序元素包括类、属性、方法等)。

  注解看起来有些像注释,但其和注释还是有显著区别的。虽然注解和注释都属于对代码的描述,不过注释的作用只是简单地描述程序的信息,方便开发者再次阅读,不会被程序所读取。而注解则是Java代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理,两者作用相差很大。

  通过使用注解,程序开发人员可以在不改变程序原有逻辑的情况下,在源代码中加入一些补充信息,代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证和部署。下面的代码展示了注释和注解:

  1. public class TestAnnotation{
  2. public static void main(String[]args){
  3. //本行是注释,下一行是注解
  4. @SuppressWarnings(value="unused")
  5. String name;
  6. }
  7. }

  刚才介绍了Java注解的基本概念,现在来看一下Java注解的语法。使用注解时要在其前面加一个“@”符号,表明后面的内容为注解。Java注解有以下三种形式。

  • 不带参数的注解:@Annotation,例如@Override;

  • 带一个参数的注解:@Annotation(参数),例如@SuppressWarings(value=”unused”);

  • 带多个参数的注解:@Annotiation({参数1, 参数2, 参数3…}),例如@MyTag(name= “jhon”,age=20)。