JCombobox и String.equals(null)

Ето моят код:

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

и получавам известното изключение java.lang.NullPointerException

Моят JCombobox се попълва като: 1-во -> нищо/празно нула не Низ нищо 2-ро -> COM1 3-то -> COM2 ....

Защо условието "ако" не е правилно?


person D3fman    schedule 13.03.2014    source източник


Отговори (2)


choixPortCom.equals(null) никога няма да е вярно. Ако choixPortCom не е null, тогава изразът ще върне false, както се очаква. Ако choixPortCom е null, тогава изразът ще хвърли 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!")
person arshajii    schedule 13.03.2014

Трябва да бъде

if (ChoixPortCom == null)

Сега, ако ChoixPortCom е null, той ще хвърли NullPointer, защото се опитвате да извикате метод (equals) на null препратка.

И нещо, което обичам да мисля за най-добра практика, е винаги да използвам скоби:

if (ChoixPortCom == null) {
    JOptionPane.showMessageDialog(null, "Choose Port COM");
}
person bknopper    schedule 13.03.2014
comment
Можете ли да направите това, ако ChoixPortCom е String? - person D3fman; 13.03.2014
comment
Определено. Низът също е обект. - person bknopper; 13.03.2014
comment
да, беше прав, работи. Направих с String.equals(), защото ми казахме това, когато сравнявам с String. Няма значение, благодаря. - person D3fman; 13.03.2014
comment
И моля, следвайте конвенциите на кода на Java, имената на променливите започват с малки букви и следвайте стил с камилски букви - person nachokk; 13.03.2014
comment
След това сравнението ще бъде с низова стойност като stringObject.equals(D3fman); Още по-добре: D3fman.equals(stringObject); (сега, ако stringObject == null, не получавате nullpointer) - person bknopper; 13.03.2014
comment
добре, благодаря за съветите. - person D3fman; 13.03.2014