文档

Java™教程
隐藏目录
预定义注解类型
路径:学习Java语言
课程:注解

预定义注解类型

Java SE API中预定义了一组注解类型。一些注解类型由Java编译器使用,而一些适用于其他注解。

Java语言使用的注解类型

java.lang中定义的预定义注解类型有@Deprecated@Override@SuppressWarnings

@Deprecated @Deprecated注解表示被标记的元素已过时,不应再使用。每当程序使用带有@Deprecated注解的方法、类或字段时,编译器会生成警告。当元素被弃用时,还应使用Javadoc的@deprecated标签进行文档化,如下例所示。Javadoc注释和注解中的@符号使用是有关联的,不是巧合。此外,请注意Javadoc标签以小写字母d开头,而注解以大写字母D开头。

   // Javadoc注释如下
    /**
     * @deprecated
     * 说明为何已过时
     */
    @Deprecated
    static void deprecatedMethod() { }
}

@Override @Override注解告诉编译器该元素是用来覆盖超类中声明的元素的。覆盖方法将在接口和继承中讨论。

   // 将方法标记为已被覆盖的
   // 超类方法
   @Override 
   int overriddenMethod() { }

虽然在覆盖方法时不需要使用此注解,但它有助于防止错误。如果使用@Override注解标记的方法未能正确覆盖其超类中的方法,编译器将生成错误。

@SuppressWarnings @SuppressWarnings注解告诉编译器抑制它通常会生成的特定警告。在下面的例子中,使用了一个已过时的方法,编译器通常会生成警告。但在这种情况下,该注解导致警告被抑制。

   // 使用已过时的方法,并告诉 
   // 编译器不生成警告
   @SuppressWarnings("deprecation")
    void useDeprecatedMethod() {
        // 已过时警告
        // - 被抑制
        objectOne.deprecatedMethod();
    }

每个编译器警告都属于一个类别。Java语言规范列出了两个类别:deprecationunchecked。在与在引入泛型之前编写的旧代码进行接口时,可能会出现unchecked警告。要抑制多个类别的警告,请使用以下语法:

@SuppressWarnings({"unchecked", "deprecation"})

@SafeVarargs @SafeVarargs 注解,当应用于方法或构造函数时,断言代码不对其varargs参数执行潜在不安全的操作。使用此注解类型,可以抑制与varargs使用相关的未经检查的警告。

@FunctionalInterface @FunctionalInterface 注解,引入于Java SE 8,指示类型声明意图作为Java语言规范定义的函数式接口。

适用于其他注解的注解

适用于其他注解的注解称为元注解。在java.lang.annotation中定义了几种元注解类型。

@Retention @Retention 注解指定了标记注解的存储方式:

@Documented @Documented 注解指示每当使用指定的注解时,应使用Javadoc工具对这些元素进行文档化。(默认情况下,注解不包含在Javadoc中。)有关更多信息,请参见Javadoc工具页面

@Target @Target 注解用于标记另一个注解,以限制该注解可以应用于哪种类型的Java元素。目标注解将以下元素类型之一指定为其值:

@Inherited @Inherited注解指示该注解类型可以从超类继承。(默认情况下不是这样。)当用户查询注解类型并且类没有该类型的注解时,将查询类的超类是否有该注解类型。该注解仅适用于类声明。

@Repeatable @Repeatable注解,Java SE 8中引入,表示标记的注解可以多次应用于相同的声明或类型使用。有关更多信息,请参阅重复注解


上一页: 声明注解类型
下一页: 类型注解和可插拔类型系统