Java NP_NULL_PARAM_DEREF_non-irtual:我不理解或误报

Java NP_NULL_PARAM_DEREF_non-irtual:我不理解或误报,java,findbugs,false-positive,Java,Findbugs,False Positive,Findbugs在下面的语句中触发NP_NULL_PARAM_DEREF_nonirtual 我不明白为什么findbugs将registerationdate识别为非空参数。我可以看到第二个构造函数检查registerationdate的空值。因此,不可能出现空的deref 这个bug是假阳性还是findbugs有另一种机制来检查参数的非空值 多谢各位, 萨拉 谢谢 是我的错。。。 当我添加“registrationDate!=null”时,错误消失了。在我看来,FindBugs在这种情况下似

Findbugs在下面的语句中触发NP_NULL_PARAM_DEREF_nonirtual

我不明白为什么findbugs将registerationdate识别为非空参数。我可以看到第二个构造函数检查registerationdate的空值。因此,不可能出现空的deref

这个bug是假阳性还是findbugs有另一种机制来检查参数的非空值

多谢各位, 萨拉

谢谢 是我的错。。。
当我添加“registrationDate!=null”时,错误消失了。

在我看来,FindBugs在这种情况下似乎不够聪明,无法正确处理布尔表达式的延迟计算。您可能需要尝试嵌套的
if
语句。外部语句将检查
registrationDate
是否为
null
,内部语句执行
equals()
检查。
Participant seppl = new Participant( "Mayer", "Seppel", null);

Participant has two constructors:
public Participant() {      
    surname = "";
    forename = "";      
    registrationDate = new Date();      
}

public Participant (String surname, String forename, Date registrationDate) {

    setSurname(surname);
    setForename(forename);      
    setRegistrationDate(registrationDate);      
 }

 public void setRegistrationDate (Date registrationDate) {
    if (registrationDate != null
            && !registrationDate.equals(this.registrationDate)) {
        this.registrationDate = registrationDate;           

    }
    }