JCombobox и String.equals (null) [дубликаты]

1

Вот мой код:

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....

Почему "если" условие не так?

Теги:
string
equals
null
jcombobox

2 ответа

2
Лучший ответ

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!")
1

Должен быть

if (ChoixPortCom == null)

Теперь, если ChoixPortCom имеет значение null, он выкинет NullPointer, потому что вы пытаетесь вызвать метод (равный) по нулевой ссылке.

И мне нравится думать, что лучше всего использовать скобки:

if (ChoixPortCom == null) {
    JOptionPane.showMessageDialog(null, "Choose Port COM");
}
  • 0
    Вы можете сделать это, если ChoixPortCom является строкой?
  • 0
    Определенно. Строка также является объектом.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню