Long变量的Nullpointer异常

时间:2013-03-05 08:36:01

标签: java

我有以下代码

private Long projectNumber; // with getters and setters

当我检查projectNumber是否为null时,我在if条件下得到空指针异常

if(selected.getProjectNumber()!=null){

// do something

}

即使Long是一个包装类,可能是什么原因。

如果我将projectNumber从Long更改为String,它可以正常工作。

更新1

private Project selected = new Project();

public Project getSelected() {
        return selected;
    }

    public void setSelected(Project selected) {
        this.selected = selected;
    }

我在以下方法

中获取JSF的ManagedBean中的选定值
public void onRowSelect(SelectEvent event) {

}

projectNo getters and setters

public Long getProjectNo() {
            return projectNo;
        }

        public void setProjectNo(Long projectNo) {
            this.projectNo = projectNo;
        }

6 个答案:

答案 0 :(得分:4)

您遇到的问题是因为selected为空,projectNumber。将支票更改为:

if(selected != null && selected.getProjectNumber()!=null){

// do something

}

或者为上面的selected添加单独的支票。

答案 1 :(得分:2)

如果你在这里获得NPE:

if(selected.getProjectNumber()!=null){

并且所有getProjectNumber()都是return projectNumber,这强烈表明 selectednull

答案 2 :(得分:1)

根据您发布的内容,我们发现问题是selected变量引用的对象是null。你也必须检查一下:

if(selected !=null && selected.getProjectNumber()!=null){

    // do something

}

说明:这样做,因为布尔AND(和OR)运算符只评估左边条件,如果它是假的,没有触及右边,你就不会得到{ {1}}。

编辑正如OP提到的那样,通过将变量更改为NullPointerExceptyion没有遇到问题,正如0xCAFEBABE的建议所暗示的那样,如果getter返回(或者内部以某种方式),也可能出现相同的错误使用)一个简单的String值而不是long个对象,变量的值为Long

null

答案 3 :(得分:1)

问题是selected为空。检查如下:

if(selected != null && selected.getProjectNumber()!=null){

   // do something

} else {
   // here: selected = null OR projectNumber of selected is null
}

答案 4 :(得分:1)

您是否检查selectednull

您可以执行以下操作

if(null != selected)
{
    if(null != selected.getProjectNumber())
    {
        // do something
    }
}

答案 5 :(得分:1)

您选择的对象显然为null,请尝试执行以下操作:

if ((selected != null) && (selected.getProjectNumber()!=null)){

// do something

}