IntelliJのは私の修正を提案したとき、私は、コードを書いていました。
objectOne.equals(objectTwo);
メソッドの呼び出しがあることを私に言ってequals
、古き良きを生成することがjava.lang.NullPointerException
、私は、知らなかったことを解決するものとして提案し、Objects.equals:
Objects.equals(objectOne, objectTwo);
私は唯一の潜在的な問題を参照マニュアルを参照して、読む場合にobjectOne == null
及びobjectTwo == null
、その結果はtrue
。
この時点で、質問です:私は交換とするのではなく、どこでも、この方法を使用して開始することができますか.equals
?これは安全なアプローチであるか、私はいくつかの大きな禁忌が欠けていますか?
NPEを退治するには、非常に魅力的です...おかげで
それはプログラムのニーズに依存し、それがどのようにその例外シナリオに答える必要があるとして、この質問には防弾の答えは、ありません。私は言うだろう、と言って:
ヌルを持つことがある場合は、プログラマのエラー私が発生し、問題の通知作り、私が意味するNULLポインタ例外として.equalsメソッドを残すことを示唆している(私は平均何か、あなたのアルゴリズムの内部で起こることを期待しないこと)、プログラマのエラー(これらのエラーは、我々が望んでいないことを!、その手段は、我々は悪いアルゴリズムを書いた)、そしてあなたにそれを報告するためのおかげでアプリケーションをすべきである(代わりに怒った本当のクライアントの....)
一方で、アプリケーションが同様に仕事ができるなら、progrmmerエラーとして、その後、より良いあなたのニーズにフィットするはObject.equalsを使用していることを考えていません。
一般的な知恵例外はleatsで記録されなければならないことを示唆しています。
それが役に立てば幸い!
TD; DR。
例外のdiffernetの種類について検討してみてください。いないすべての例外は、プログラマエラーです。
Javaでは、通常、チェック例外は、あなたが、あなたが処理することができる必要があり、コードを書くことができる予想できることをすべて、それらのイベントのためのものです。そして、未チェック例外(RuntimeExceptionをの家族に属しているもの)はあなただけ(NULLポインタ例外のように)予想することができないという事象のためのものである。したがって、あなたが(代わりに、あなたは修正する必要が期待していないことをハンドル物事への書き込みコードにIMPOSIBLEですすでに既存のコードを、新しい書き込みません!)