【发布时间】:2019-11-16 15:05:35
【问题描述】:
检查器框架的手册声称“您可以在单个方法上编写多个 @EnsuresNonNullIf 注释”,但是如果我尝试这样做,我会看到以下消息:
@EnsuresNonNullIf(expression="getFieldNames()", result=true)
@EnsuresNonNullIf(expression="getFieldName(i)", result=true)
public boolean hasFieldNames() {
return fFieldNames != null;
}
Eclipse Java 编译器生成的错误消息:
不可重复类型@EnsuresNonNullIf 的重复注解。只有标记为@Repeatable 的注解类型可以在一个目标上多次使用。
MVN javac 编译器产生的错误信息:
[ERROR] Blabla.java:[?,?] org.checkerframework.checker.nullness.qual.EnsuresNonNullIf 不是可重复的注解类型
我正在注释 10 年前的代码,所以我希望一些配置技巧可以安全地度过这一天 :-) 如果没有多个 @EnsuresNonNullIf,我需要大量手动代码注释来修复误报我不感兴趣...
PS:我尝试同时使用 checker-framework-2.8.1 和 2.9.0,结果相似,并且始终使用 <maven.compiler.source>1.8</maven.compiler.source>
【问题讨论】:
标签: java-8 non-nullable java-annotations checker-framework