Вот мой код:
if (ChoixPortCom.equals(null) == true ) JOptionPane.showMessageDialog(null, "Choose Port COM");
и я получаю знаменитое java.lang.NullPointerException
Мой JCombobox заполнен как: 1st → nothin/empty null no String nothing 2nd → COM1 3nd → COM2....
Почему "если" условие не так?
choixPortCom.equals(null)
никогда не будет правдой. Если choixPortCom
не равен null
, тогда выражение вернет false, как ожидалось. Если choixPortCom
имеет значение null
, выражение будет choixPortCom
NullPointerException
, поскольку вы пытаетесь вызвать метод на null
; это то, что происходит в вашем случае. Соответствующий способ проверить значение null
:
if (choixPortCom == null) // I've assumed a more common naming convention
Существует также класс Objects
в Java 7, который имеет некоторые полезные методы для null
-checking. Например, Objects.requireNonNull()
:
Objects.requireNonNull(choixPortCom, "input can't be null!")
Должен быть
if (ChoixPortCom == null)
Теперь, если ChoixPortCom имеет значение null, он выкинет NullPointer, потому что вы пытаетесь вызвать метод (равный) по нулевой ссылке.
И мне нравится думать, что лучше всего использовать скобки:
if (ChoixPortCom == null) {
JOptionPane.showMessageDialog(null, "Choose Port COM");
}