сравните объект с нулем! - PullRequest
12 голосов
/ 15 июня 2009

Я пытаюсь проверить, является ли объект нулевым или нет, и я использую этот синтаксис:

void renderSearch(Customer c){
         System.out.println("search customer rendering>...");
         try {
             if(!c.equals(null)){            
                 System.out.println("search customer  found...");
             }else{               
                 System.out.println("search customer not found...");
             }
         } catch (Exception e) {
             System.err.println ("search customer rendering error: "
                                     + e.getMessage()+"-"+e.getClass());
         }
     }

Я получаю следующее исключение:

ошибка поиска клиента при поиске: null Класс java.lang.NullPointerException

Я думал, что рассматриваю эту возможность с помощью цикла if и else. Любая помощь будет оценена.

Ответы [ 7 ]

24 голосов
/ 15 июня 2009

Попробуйте c! = Null в вашем операторе if. Вы не сравниваете сами объекты, вы сравниваете их ссылки.

11 голосов
/ 15 июня 2009
!c.equals(null)

Эта строка вызывает метод equals для c, и если c равен нулю, вы получите эту ошибку, потому что вы не можете вызывать никакие методы для нуля. Вместо этого вы должны использовать

c != null
10 голосов
/ 15 июня 2009

Используйте c == null, поскольку вы сравниваете ссылки , а не объекты.

8 голосов
/ 15 июня 2009

Используйте c == null

Метод equals (обычно) ожидает аргумент типа customer и может вызывать некоторые методы объекта. Если этот объект является нулем, вы получите исключение NullPointerException.

Также c может быть нулевым, и вызов c.equals может вызывать исключение независимо от переданного объекта

3 голосов
/ 15 июня 2009

Скорее всего, объект c равен нулю в этом случае.

Возможно, вы захотите переопределить реализацию equals по умолчанию для Customer, если вам нужно вести себя иначе.

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

0 голосов
/ 17 декабря 2018

Реальность такова, что когда c равен нулю, вы пытаетесь выполнить null.equals, так что это создает исключение. Правильный способ сделать это сравнение - "null" .equals (c).

0 голосов
/ 12 ноября 2014

если объект C имеет нулевое значение, то для сравнения нулевого значения используется следующий оператор:

if (c.toString() == null) {

    System.out.println("hello execute statement");

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...