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またはについて話すのは意味がありません@NonNull char。Nullness は、オブジェクト (非プリミティブ) 型にのみ適用されます。初期化も同様です。

の null 許容配列を指定する場合char、つまり、変数replacementが null であるか、の配列である場合は、次のcharように記述します。

char @Nullable [] replacement = ...;

あなたが書くなら

 @Nullable char [] replacement = ...;

それは の配列です@Nullable char

これは Java 型注釈構文の標準部分であり、Checker フレームワークに固有のものではありません。ただし、Checker Framework のマニュアルには、これに関する FAQがあります。

于 2015-06-30T18:51:21.923 に答える