Checker Framework 的手册声称“您可以在单个方法上编写多个 @EnsuresNonNullIf 注释”,但是如果我尝试这样做,我会看到以下消息:
@EnsuresNonNullIf(expression="getFieldNames()", result=true)
@EnsuresNonNullIf(expression="getFieldName(i)", result=true)
public boolean hasFieldNames() {
return fFieldNames != null;
}
Eclipse Java 编译器生成的错误消息:
不可重复类型@EnsuresNonNullIf 的重复注释。只有标记为@Repeatable 的注解类型可以在一个目标上多次使用。
MVN javac 编译器生成的错误消息:
[错误] 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>