【发布时间】:2016-03-29 11:47:30
【问题描述】:
我们能否在 Java 7 项目中使用 JSR 308 类型注解(如 @NonNull,...)?如果是,相关的maven依赖是什么?
【问题讨论】:
标签: java jsr type-annotation
我们能否在 Java 7 项目中使用 JSR 308 类型注解(如 @NonNull,...)?如果是,相关的maven依赖是什么?
【问题讨论】:
标签: java jsr type-annotation
【讨论】:
“Java 7 项目”是指“可以使用 Java 7 编译器编译的项目”。类型注释是 Java 8 的一个特性——就像 lambdas,如果你使用它们,那么你的代码就不能用标准的 Java 7 编译器编译。
有一个特殊的编译器type annotations compiler,它读取类型注释written in comments,如List</*@NonNull*/ String>。当您使用常规 Java 7 编译器编译此类文件时,该编译器会忽略 cmets。这就是您的代码可以同时使用类型注释并与 Java 7 兼容的方式。
Checker Framework 将特殊编译器与注释处理器打包在一起,它们会警告您的代码中不正确的@NonNull 注释和可能的空指针异常。
你可以看到它对annotations in comments的讨论。
有Maven integration for the Checker Framework。您需要选择 Java 7 方向。
【讨论】: