2016-06-08 62 views
0

我當前的代碼如下所示(請注意,getId()返回string值):如何更正使用查找空值的if/else語句?

if(person.getId()==null){ 

    //do something 
else{ 

    //do something else 

} 

不過,我仍然得到一個null Pointer exception如果person.getId()值爲空。

我該如何解決這個問題?

+0

做一個如果不是空檢查,然後其他。 – Li357

+2

這取決於「做某事」做什麼。 – Eran

+2

你確定這個人不是空? –

回答

2

一般測試是一樣的東西:

  • 對象不是空
  • 對象的
  • 屬性所需要

爲了您的例子中,你需要大概,如果存在的人做一些事情,沒有ID。

if (person != null && person.getId() == null) { 
    // Do something, for example create person on the db 
} 

這解決了person爲空的問題。這可能有personnull這裏


注是錯誤的。

1

嘗試:

if(person == null || person.getId() == null) { 
    // do something 
} else { 
    // do something else 
} 
+0

'if(person == null && person.getId()== null)'應該選擇在if(person == null || person.getId()== null)''上,因爲JVM會在person == null如果在||時不爲null (或)會導致第二個陳述也被檢查。 – kouljaboy

1

乘坐read about Optional那是在Java8

介紹對於某些類,如String,你可以做 「價值」 .equals(MyString的),而不是myString.equals(「值「),如果myString爲null,則斷言將失敗,而不是拋出NPE。