Annotations Basics

注解 的格式

以最简单的形式,注解 如下所示:

@Entity

at 符号字符(@)向编译器指示后面是 注解。在以下示例中,注解 的名称为Override

@Override
void mySuperMethod() { ... }

注解 可以包括* elements *,可以命名或不命名,并且这些元素具有值:

@Author(
   name = "Benjamin Franklin",
   date = "3/27/2003"
)
class MyClass() { ... }

or

@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 8 版本开始,支持重复 注解。有关更多信息,请参见Repeating Annotations

注解 类型可以是 Java SE API 的java.langjava.lang.annotation包中定义的类型之一。在前面的示例中,OverrideSuppressWarnings预定义的 Java 注解。也可以定义自己的 注解 类型。上一个示例中的AuthorEbook注解 是自定义 注解 类型。

可以在何处使用注解

注解 可以应用于声明:类,字段,方法和其他程序元素的声明。当在声明中使用时,每个 注解 通常会按照惯例出现在自己的行上。

从 Java SE 8 发行版开始,注解 也可以应用于类型的* use *。这里有些例子:

类实例创建表达式:

new @Interned MyObject();

Type cast:

myString = (@NonNull String) str;
class UnmodifiableList<T> implements
        @Readonly List<@Readonly T> { ... }

引发异常声明:

void monitorTemperature() throws
        @Critical TemperatureException { ... }

这种形式的 注解 称为类型 注解。有关更多信息,请参见类型 注解 和可插入类型系统

首页