web-dev-qa-db-ja.com

オブジェクトをnullと比較してください!

オブジェクトがnullかどうかを確認しようとしていますが、次の構文を使用しています。

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

この可能性をifandelseループで検討していると思いました。どんな助けでもいただければ幸いです。

12
fenec

Ifステートメントでc!= nullを試してください。オブジェクト自体を比較しているのではなく、それらの参照を比較しているのです。

24
Suvesh Pratapa
!c.equals(null)

その行はcでequalsメソッドを呼び出しており、cがnullの場合、nullでメソッドを呼び出すことができないため、そのエラーが発生します。代わりに使用する必要があります

c != null
11
Greg Leaver

使用する c == null、比較しているので参照、オブジェクトではありません。

10
Alex Martelli

C == nullを使用する

Equalsメソッドは(通常)customer型の引数を想定しており、オブジェクトに対していくつかのメソッドを呼び出している可能性があります。そのオブジェクトがnullの場合、NullPointerExceptionが発生します。

また、cがnullであり、渡されたオブジェクトに関係なく、c.equals呼び出しが例外をスローする可能性があります。

8
Midhat

この場合、オブジェクトcはnullである可能性があります。

別の動作が必要な場合に備えて、Customerのequalsのデフォルトの実装をオーバーライドすることをお勧めします。

また、渡されたオブジェクトがnullでないことを確認してから、そのオブジェクトで関数を呼び出します。

3
Nrj

現実には、cがnullの場合、null.equalsを実行しようとしているため、例外が生成されます。その比較を行う正しい方法は「null」.equals(c)です。

0
José García