文档

Java™教程
隐藏目录
类型注解和可插拔类型系统
导航: 学习Java语言
课程: 注解

类型注解和可插入类型系统

在Java SE 8发布之前,注解只能应用于声明。从Java SE 8发布开始,注解还可以应用于任何类型使用。这意味着注解可以在任何使用类型的地方使用。一些使用类型的示例包括类实例创建表达式(new),强制类型转换,implements子句和throws子句。这种形式的注解称为类型注解,在注解基础中提供了几个示例。

类型注解的目的是支持改进Java程序的分析方式,以确保更强的类型检查。Java SE 8发布没有提供类型检查框架,但它允许您编写(或下载)作为一个或多个可插拔模块实现的类型检查框架,与Java编译器一起使用。

例如,您想要确保程序中的特定变量永远不会被赋值为null;您想要避免触发NullPointerException。您可以编写一个自定义插件来检查这个问题。然后,您会修改代码来注释该特定变量,表示它永远不会被赋值为null。变量声明可能如下所示:

@NonNull String str;

当您编译代码时,包括在命令行中的NonNull模块,如果编译器检测到潜在问题,则会打印出警告,让您修改代码以避免错误。在您纠正代码以消除所有警告后,该特定错误在程序运行时将不会发生。

您可以使用多个类型检查模块,其中每个模块检查不同类型的错误。通过这种方式,您可以在需要时在Java类型系统之上构建,并添加特定的检查。

通过谨慎使用类型注解和可插拔类型检查器的存在,您可以编写更强大、更不容易出错的代码。

在许多情况下,您无需编写自己的类型检查模块。有第三方已经为您完成了这项工作。例如,您可能希望利用华盛顿大学创建的Checker Framework。该框架包括一个NonNull模块,以及一个正则表达式模块和一个互斥锁模块。有关更多信息,请参见Checker Framework


上一页: 预定义注解类型
下一页: 重复注解