Java @Nullable参数

时间:2015-07-18 19:36:24

标签: java intellij-idea

我已经反汇编了.jar文件并最终得到了一些调用构造函数的文件:

public Interface_inheritance_specContext(ParserRuleContext parent, int invokingState) { super(invokingState); }

具有以下实现:

public ParserRuleContext(@Nullable ParserRuleContext parent, int invokingStateNumber) {
        super(parent, invokingStateNumber);
    }

编译时会出现以下错误:

Error:(199, 92) java: no suitable constructor found for ParserRuleContext(int)
    constructor org.antlr.v4.runtime.ParserRuleContext.ParserRuleContext() is not applicable
      (actual and formal argument lists differ in length)
    constructor org.antlr.v4.runtime.ParserRuleContext.ParserRuleContext(org.antlr.v4.runtime.ParserRuleContext,int) is not applicable
      (actual and formal argument lists differ in length)

查看this问题我没有看到任何考虑 @Nullable 参数的答案。构造函数位于一个单独的.jar文件中,我希望我也不必反汇编它。

我注意到,通过添加额外的null参数解决了这个问题。但为什么首先给出错误?

1 个答案:

答案 0 :(得分:3)

您在问题中粘贴的ParserRuleContext的构造函数不是vararg构造函数,但它是一个接受两个参数的构造函数,@ Nullable只是提到第一个参数可以为null。

因此,当您只使用一个参数调用构造函数时,它不会识别单个参数构造函数,从而识别错误。