Ответ 1
Использование
stringVariable == null
Чтобы проверить, является ли stringVariable
null
.
Метод equals
(и любой другой метод) требует stringVariable
не быть null
.
Мой код разбивается на следующую строку с помощью nullpointerexception:
if (stringVariable.equals(null)){
До этого оператора я объявляю stringVariable и устанавливаю его в поле базы данных.
В этом утверждении я пытаюсь определить, было ли поле значением null
, но, к сожалению, оно ломается!
Любые мысли?
Использование
stringVariable == null
Чтобы проверить, является ли stringVariable
null
.
Метод equals
(и любой другой метод) требует stringVariable
не быть null
.
если stringvariable
уже null, он больше не существует как объект String
, поэтому у него даже не будет метода .equals
! Поэтому в случае, когда stringvariable
равно null, то, что вы действительно делаете, это null.equals(null)
, после чего вы получите NullPointerException
, потому что null
не имеет метода .equals()
.
Никогда неразумно вызывать метод, будь он равно() или иначе, переменной, которая может быть нулевой. Вот почему обычно делается что-то вроде:
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, поскольку у них много оптимизированных утилит (для строк, коллекций, дат и т.д.), которые, как правило, лучше, чем домашние.
Метод 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)