技術的にすべての回答を受け入れます。実際には、私が管理しているコードではそれらのいずれも使用しません。これは、提供されているすべてのソリューションが中核的な問題である null 値を回避しているためです。コアモデルをNULL値から解放してください。この場合、質問は時代遅れです。
サード パーティのライブラリなどのシステム境界では、null 値を処理する必要がある場合があります。これらは、コア モデルの意味のある値に変換する必要があります。そこで、与えられた解決策が役に立ちます。
Oracle が equals-Methods を null セーフにすることを推奨している場合でも、それについて考えてみてください。null 値を受け入れると、モデルは脆弱になります。equals メソッドは、null をチェックする最後のメソッドではありません。メソッド呼び出し階層で null チェックを管理する必要があります。メソッドはそのままでは再利用できない場合があります。まもなく、すべてのパラメーターが null かどうかがチェックされます。
私は両面を見ました:
一方では、null チェックでいっぱいのコード、もう 1 つのパラメーターを信頼しないメソッド、null チェックを忘れることを恐れる開発者などがあります。
一方、NullPointerExceptions を恐れずに使用できる完全に機能するオブジェクトを持つ明確なアサーションを行う、完全な表現力のあるステートメントを含むコード。