2014-03-13 23 views
1

這裏是我的代碼:的JComboBox和String.equals(空)

if (ChoixPortCom.equals(null) == true) JOptionPane.showMessageDialog(null, "Choose Port COM"); 

,我也得到了著名顯示java.lang.NullPointerException

我的JComboBox充滿這樣的: 月1日 - >沒什麼/空null no String nothing 2nd - > COM1 3nd - > COM2 ....

爲什麼「if」條件不正確?

回答

2

choixPortCom.equals(null)永遠不會爲真。如果choixPortCom不是null,那麼該表達式將按預期返回false。如果choixPortComnull,則表達式將拋出一個NullPointerException,因爲您試圖調用null上的方法;這就是你的情況。用適當的方式來檢查null是:

if (choixPortCom == null) // I've assumed a more common naming convention 

還有一個Objects類在Java 7中具有用於null - 檢查一些有用的方法。例如,Objects.requireNonNull()

Objects.requireNonNull(choixPortCom, "input can't be null!") 
1

應該

if (ChoixPortCom == null) 

現在,如果ChoixPortCom爲null,它會拋出一個空指針,因爲你試圖調用一個空引用的方法(等於)。

而且我喜歡的東西想作爲一個最好的做法是始終用括號:

if (ChoixPortCom == null) { 
    JOptionPane.showMessageDialog(null, "Choose Port COM"); 
} 
+0

你能做到這一點,如果ChoixPortCom是一個字符串? – D3fman

+0

當然。字符串也是一個對象。 – bknopper

+0

是的,你是對的,它的工作原理。我用String.equals()做了這個,因爲當我和String比較的時候我們告訴了我這個。沒關係,謝謝。 – D3fman