Java 如何绕过checker framework type.invalid错误?
我们已经编写了一个库,在引入Checker框架NullnessChecker来验证其代码之后,它无法按预期编译。我已经修复了所有明显的错误,但这一个我不知道如何修复 下面是违规函数的签名:Java 如何绕过checker framework type.invalid错误?,java,checker-framework,Java,Checker Framework,我们已经编写了一个库,在引入Checker框架NullnessChecker来验证其代码之后,它无法按预期编译。我已经修复了所有明显的错误,但这一个我不知道如何修复 下面是违规函数的签名: private static @Nullable char[] getChars(char ch) 以及发生错误的呼叫站点: @Nullable char[] replacement = getChars( string.charAt( index ) ); 有人能告诉我如何让检查者接受这个吗?在我看来,
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"
错误消息
[@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是没有意义的。空值仅适用于对象非基元类型。初始化也是如此
如果要指定一个可为null的char数组,即变量替换为null或char数组,请按以下方式写入:
char @Nullable [] replacement = ...;
如果你写信
@Nullable char [] replacement = ...;
那就是@Nullable char的数组
这是Java类型注释语法的标准部分,并不特定于Checker框架。然而,这一点在世界范围内存在争议