使用Java7的类型注释(JSR308)?
我们可以在Java7项目中使用JSR308类型的注释(比如使用Java7的类型注释(JSR308)?,java,jsr,type-annotation,Java,Jsr,Type Annotation,我们可以在Java7项目中使用JSR308类型的注释(比如@NonNull,…)吗?如果是,相关的maven依赖关系是什么?是。。。某种程度上。类型注释是在Java8中引入的,所以它们在Java7中根本不起作用。例如,JSR308的OpenJDK实现就在OpenJDK8JDK中。所以你不能用这个 但是您可以使用checker框架,该框架允许您在中注释掉类型注释,但仍然可以使用它们。描述了设置。您将需要以下maven依赖项: <dependency> <groupId&g
@NonNull
,…)吗?如果是,相关的maven依赖关系是什么?是。。。某种程度上。类型注释是在Java8中引入的,所以它们在Java7中根本不起作用。例如,JSR308的OpenJDK实现就在OpenJDK8JDK中。所以你不能用这个
但是您可以使用checker框架,该框架允许您在中注释掉类型注释,但仍然可以使用它们。描述了设置。您将需要以下maven依赖项:
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker</artifactId>
<version>1.9.12</version>
</dependency>
org.checkerframework
检验员
1.9.12
关于“Java 7项目”,我假定您指的是“可以使用Java 7编译器编译的项目”。类型注释是Java 8的一个特性——就像lambdas一样,如果您使用它们,那么您的代码就不能用标准Java 7编译器编译
有一个特殊的编译器,读取类型注释,如List
。当您使用常规Java7编译器编译这样的文件时,该编译器会忽略注释。这就是您的代码如何使用类型注释并与Java7兼容的方法
将特殊编译器与注释处理器打包在一起,这些处理器会警告不正确的@NonNull
注释以及代码中可能出现的空指针异常。
你可以看到它的讨论
有。您需要选择Java 7方向。谢谢。我查一下。