使用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

我们可以在Java7项目中使用JSR308类型的注释(比如
@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方向。

谢谢。我查一下。