2

我们有一个我们编写的库,在引入 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"
4

1 回答 1

4

错误信息

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

如果它只是

@Nullable may not be applied to the type "char"

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

如果你想指定一个可以为空的数组char——也就是说,变量replacement要么是空的,要么是一个数组char——然后这样写:

char @Nullable [] replacement = ...;

如果你写

 @Nullable char [] replacement = ...;

那么这是一个数组@Nullable char

这是 Java 类型注释语法的标准部分,并不特定于 Checker Framework。但是,在Checker Framework 手册中有一个关于此的常见问题解答

于 2015-06-30T18:51:21.923 回答