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

Мой код разбивается на следующую строку с помощью nullpointerexception:

 if (stringVariable.equals(null)){

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

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

Любые мысли?

Ответ 1

Использование

stringVariable == null

Чтобы проверить, является ли stringVariable null.

Метод equals (и любой другой метод) требует stringVariable не быть null.

Ответ 2

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

Ответ 3

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

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, поскольку у них много оптимизированных утилит (для строк, коллекций, дат и т.д.), которые, как правило, лучше, чем домашние.

Ответ 4

Метод equals() не работает с нулевым параметром.

Метод должен иметь объект или строку в качестве параметра.

public boolean equals(Object anObject)

Так как null не является объектом. Является null объектом?.

Также обратитесь к документации по java 7, в которой говорится, что equals даст результат тогда и только тогда, когда переданный объект не является нулевым.

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals(java.lang.Object)