Почему я получаю NullPointerException при сравнении Строки с пустым указателем?

Мой код повреждается на следующей строке с nullpointerexception:

 if (stringVariable.equals(null)){

До этого оператора я объявляю stringVariable и устанавливаю его на поле базы данных.

В этом операторе я пытаюсь обнаружить, если поле имело a null значение, но к сожалению это повреждается!

Какие-либо мысли?

12
задан Joachim Sauer 1 March 2010 в 18:36
поделиться

3 ответа

Используйте

stringVariable == null

, чтобы проверить, является ли stringVariable нулевым .

Метод равно (и любой другой метод) требует, чтобы stringVariable не было нулевым .

33
ответ дан 2 December 2019 в 03:07
поделиться

если строковая переменная уже равна нулю, она больше не существует как объект String , поэтому он выиграл у меня даже нет метода .equals ! Таким образом, если строковая переменная имеет значение null, то на самом деле вы делаете null.equals (null) , и в этот момент вы получите исключение NullPointerException , потому что null не имеет метода .equals () .

12
ответ дан 2 December 2019 в 03:07
поделиться

Никогда не стоит вызывать метод, будь то equals () или иначе, на переменная, которая может иметь значение NULL. Вот почему обычно делают что-то вроде:

if ( var != null && var.method(something) ) {
  // var.method() was true
} else {
  // var is null or var.method is false
}

В вашем особом случае будет достаточно сделать

if (stringVariable == null) {
}

при работе со строками, он может заплатить, чтобы проверить Apache Commons StringUtils .

Всегда полезно ознакомиться с общедоступными библиотеками apache, поскольку в них есть множество оптимизированных утилит (для строк, коллекций, дат и т. Д.), Которые, как правило, лучше, чем домашние.

5
ответ дан 2 December 2019 в 03:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: