什么是注解
- 允许程序员在编写代码的同时可以直接编写元数据
- 在引入注解之前,程序员们描述其代码的形式尚未标准化,每个人的做法各异:transient关键字、注释、接口等。这显然不是一种优雅的方式,随之而来的一种崭新的记录元数据的形式——注解被引入到Java中.
- 其它因素也促成了这个决定:当时不同类型的应用程序使用XML作为标准的代码配置机制,这其实并不是最佳方式,因为代码和XML的解耦以及未来对这 种解耦应用的维护并不低廉。另外,由于非保留字的使用,例如“@deprecated”自从Java1.4便开始在Java文档中使用。我非常确定这是一 个现在在注解中使用“@”原因。
注解语法和元素
- 声明一个注解需要使用“@”作为前缀,这便向编译器说明,该元素为注解。例如:
@Annotation public void annotatedMehod() { ... }
- 上述的注解名称为Annotation,它正在注解annotatedMethod方法。编译器会处理它。注解可以以键值对的形式持有有很多元素,即注解的属性。
@Annotation( info = "I am an annotation", counter = "55" ) public void annotatedMehod() { ... }
- 如果注解只包含一个元素(或者只需要指定一个元素的值,其它则使用默认值),可以像这样声明:
@Annotation("I am an annotation") public void annotatedMehod() { ... }
- 就像我们看到的一样,如果没有元素需要被指定,则不需要括号。多个注解可以使用在同一代码上,例如类:
@ Annotation (info = "U a u O") @ Annotation2 class AnnotatedClass { ... }
用在什么地方
注解基本上可以在Java程序的每一个元素上使用:类,域,方法,包,变量,等等。
自Java8,诞生了通过类型注解的理念。在此之前,注解是限于在前面讨论的元素的声明上使用。从此,无论是类型还是声明都可以使用注解,就像:
@MyAnnotation String str = "danibuiza";