2016-06-15 3 views
0

Checker Frameworkを使用すると、コンストラクタで使用されるメソッドは、@UnderInitializationの注釈付きパラメータを取ることができます。チェッカーフレームワークは、初期化された値を@UnderInitializationパラメータとして返す

非コンストラクタから、このようなメソッドを呼び出すと、それを次のエラーで@Initializedパラメータ結果渡す:@Initialized値を渡して以来、私は、これが問題であることはよく分からない

error: [argument.type.incompatible] incompatible types in argument. 

found : @Initialized <Object> 
required: @UnderInitialization <Object> 

はいけません悪い副作用があります。

このエラーに対処する適切な方法は何ですか?

答えて

1

タイプチェックの警告が私に似ています。

この問題を理解するには、type hierarchy of the initialization type systemをご検討ください。 @Initializedおよび@UnderInitializationは、型階層内の兄弟です。 @UnderInitializationが必要な場合は、Dateが必要な場合はListを入力するよりも、を入力することは合法ではありません。

初期化されている値と初期化されている値の両方でメソッドが機能する場合は、@UnknownInitializationという名前の注釈を付けることができます。このスーパータイプは@Initialized@UnderInitializationです。

関連する問題