如何规避checker框架类型。无效错误?

时间:2015-06-30 12:55:47

标签: java checker-framework

我们已经编写了一个库,在介绍Checker Framework NullnessChecker以验证其代码后,它无法编译(如预期的那样)。我已经解决了所有明显的错误,但是这个我无法找到如何修复......

这是违规功能的签名:

private static @Nullable char[] getChars(char ch)

发生错误的呼叫站点:

@Nullable char[] replacement = getChars( string.charAt( index ) );

有谁能告诉我如何让检查员接受这个?在我看来,这是正确的代码。

修改

错误:

[type.invalid] [@Initialized, @Nullable] may not be applied to the type "@Initialized @Nullable char"

1 个答案:

答案 0 :(得分:3)

错误消息

[@Initialized, @Nullable] may not be applied to the type "@Initialized @Nullable char"
如果它刚刚

,它会更清楚
@Nullable may not be applied to the type "char"

问题是char是原始类型。谈到@Nullable char@NonNull char是没有意义的。 Nullness仅适用于对象(非原始)类型。初始化也是如此。

如果要指定char的可空数组 - 也就是说,变量replacement为null或者是char的数组 - 那么就这样写:

char @Nullable [] replacement = ...;

如果你写

 @Nullable char [] replacement = ...;

那么这是一个@Nullable char的数组。

这是Java类型注释语法的标准部分,并不特定于Checker Framework。但是,FAQ中有一个Checker Framework manual