Checker Framework将@Initialized值作为@UnderInitialization参数传递

时间:2016-06-15 19:44:04

标签: java checker-framework

使用Checker Framework,构造函数使用的方法可以使用@UnderInitialization带注释的参数。

从非构造函数调用此类方法并向其传递@Initialized参数会导致以下错误:

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

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

我不确定这是一个问题,因为传递@Initialized值不应该有副作用。

解决此错误的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

类型检查警告对我来说是正确的。

要了解此问题,请考虑type hierarchy of the initialization type system@Initialized@UnderInitialization是类型层次结构中的兄弟。在需要@Initialized时提供@UnderInitialization比在需要List时提供Date更合法。

如果您的方法适用于初始化的值和初始化值,那么您可以将其参数注释为@UnknownInitialization,这是@Initialized@UnderInitialization的超类型