我有以下代碼空指針異常的長變量
private Long projectNumber; // with getters and setters
,當我檢查projectNumber
是否爲空或不是,我在獲得空指針異常如果條件
if(selected.getProjectNumber()!=null){
// do something
}
什麼可能是這個原因,儘管Long是一個包裝類。
如果我更改projectNumber從長到字符串,它工作正常。
更新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 getter和setter
public Long getProjectNo() {
return projectNo;
}
public void setProjectNo(Long projectNo) {
this.projectNo = projectNo;
}
如果你寫'null.getProjectNumber()'('selected'爲'null'),你會得到同樣的異常。 – Maroun 2013-03-05 08:37:41
你的long不是一個變量,而是一個原始值的Wrapper類。因此,它可以是未初始化的。首先訪問包裝類的方法而不初始化它會導致NullPointerException。 – 0xCAFEBABE 2013-03-05 08:38:46
@ 0xCAFEBABE如果getter返回一個'long'而不是'Long',不是嗎?但我認爲,由於OP的變量爲「長」,他確實宣佈吸氣劑也回報... – ppeterka 2013-03-05 08:42:42