注解Annotation
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻非常方便地使用这些数据。
概念
-
Annotation在一定程度上是把元数据和源代码文件结合在一起,而不是保存在外部文档中这一大的趋势之下所催生的。从JDK5.0开始引入。
-
Annotation的作用:
-
不是程序本身,可以对程序作出解释。(这一点和注释comment相同)
-
可以被其他程序(比如编译器)读取
-
-
Annotation的格式:
-
注解是以“@注解名”在代码中存在的,还可以添加一些参数值,例如:
@SuppressWarnings(value = "unchecked")
-
-
Annotation的使用范围:
-
可以附加在package,class,method,field等上,相当于给它们添加了额外的辅助信息,可以通过反射机制访问这些元数据
-
内置注解(定义在java.lang中的注解)
-
@Override,表示当前的方法定义将覆盖超类中的方法。
-
@Deprecated,如果程序员使用了注解为它的元素,那么编译器会发出警告信息
-
@SuppressWarnings,关闭不当的编译器警告信息。在Java SE5之前的版本中,也可以使用该注解,不过会被忽略不起作用
-
此注解需要添加一个参数才能使用,这些参数都是已经定义好了的
-
@SuppressWarnings("all")
-
@SuppressWarnings("unchecked")
-
@SuppressWarnings(value = {"unchecked", "deprecation"})
-
等等
-
-
元注解
Java目前只内置了三种标准注解,以及四种元注解。元注解专职负责注解其他的注解:
@Target 表示该注解可以用于什么地方。可能的ElementType参数包括:
CONSTRUCTOR:构造器
FIELD:域(包括enum实例)
LOCAL_VARIABLE:局部变量
METHOD:方法
PACKAGE:包
PARAMETER:参数
TYPE:类、接口(包括注解类型)或enum
@Retention 表示需要在什么级别保存该注解信息。可选的RententionPolicy参数包括:
SOURCE:注解将被编译器丢弃
CLASS:注解在class文件中可用,但会被JVM丢弃
RUNTIME:JVM将在运行期也保留注解,因此可以通过反射机制读取注解的信息
@Documented 将此注解包含在Javadoc中
@Inherited
自定义注解
使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口。
例:
import java.lang.annotation.*
//元注解
说明:
-
可以通过default来声明元素的默认值
-
如果只有一个注解元素,一般元素名为value。这样做的好处是给value赋值时可以省略value =
-
注解元素必须要有值,定义注解时,经常使用空字符串、0、-1作为默认值

浙公网安备 33010602011771号