概述:
注解,一种元数据形式提供了一个不属于程序本身的程序数据。注解对它们所注解代码的操作没有直接的影响。
作用:
注解有很多用途,其中:
1、编译器的信息 - 编译器可以使用注释来检测错误或平息警告。
2、编译时和部署时处理 - 使用软件工具可以处理注解信息以生成代码,XML文件等。
3、运行时处理 - 有些批注可在运行时检查。
本课将说明可以使用注释的位置,如何应用注解,Java平台,标准版(Java SE API)中可用的预定义注解类型,可插拔类型系统如何与可插拔类型的系统一起使用更强的编写代码类型检查,以及如何实现重复注解。
注解的格式
在其最简单的形式中,注释如下所示:
@Entity
符号(@)向编译器指出接下来是一个注释。在以下示例中,注解的名称为override:
@Override
void mySuperMethod() { ... }
注释可以包括可以命名或未命名的元素,并且有这些元素的值:
@Author(
name = "Benjamin Franklin",
date = "3/27/2003"
)
class MyClass() { ... }
或者:
@SuppressWarnings(value = "unchecked")
void myMethod() { ... }
如果只有一个名为value的元素,那么该名称可以省略,如:
@SuppressWarnings("unchecked")
void myMethod() { ... }
如果注释没有元素,则可以省略括号,如前面的@Override示例所示。
在同一声明中也可以使用多个注解:
@Author(name = "Jane Doe")
@EBook
class MyClass { ... }
如果注释具有相同的类型,那么这称为重复注释:
@Author(name = "Jane Doe")
@Author(name = "John Smith")
class MyClass { ... }
注解类型可以是Java SE API的java.lang或java.lang.annotation包中定义的类型之一。在前面的例子中,覆盖和平息警告是预定义的Java注解。也可以定义自己的注解类型。上一个示例中的author和Ebook注解是自定义注解类型。
注解的应用场景
注解可以应用于声明:类,字段,方法和其他程序元素的声明。在声明中使用时,每个注解通常按照惯例出现在所注解行的上方。
从Java SE 8版本开始,注解也可以应用于类型的使用。这里有些例子:(这种注解形式称为类型注解。)
1、类实例创建表达式:
new @Interned MyObject();
2、类型转换:
myString = (@NonNull String) str;
3、实现接口
class UnmodifiableList<T> implements @Readonly List<@Readonly T> { ... }
4、异常抛出的声明
void monitorTemperature() throws
@Critical TemperatureException { ... }