Javaは、「null
-safe」またはnull
「許容」メソッドを含むObjects
クラスを導入しました(compare(T, T, Comparator<T>)
を含む)。しかし、ときに私が今まで単にObjects.compare()メソッドの目的は何ですか?
comparator.compare(left, right);
を呼び出す上
Objects.compare(left, right, comparator);
を使うのでしょうか?
Objects.compare
がnull
の場合のみです。comparator
の場合はセーフなので、なぜ私は比較呼び出しをラップしますか?オブジェクトのアイデンティティの最初のチェックの最適化は、コンパレータ自体で実行する必要があるようです。そして、私が見ることができる行動の唯一の本当の違いはObjects.compare
はそうではないcomparator
、left
とright
のすべてが、null
ある場合comparator.compare(left, right)
はNullPointerException
を投げることです。これは実際には、新しい標準ライブラリメソッドを保証するのに十分な重要な考慮事項のようではありません。
私はここで何かが分かりませんか?
、私は同意するものとします。 [Guavaの 'Ordering'](https://code.google.com/p/guava-libraries/wiki/OrderingExplained)は、その問題を解決するのにもっと良い仕事をしています。 –
このメソッドはJDKのどこでも使用されていません。おそらく役に立たないでしょう。 – ZhongYu
このメソッドが行う唯一のことは、コンパレータがそのケースをテストしない場合に、両方の引数がnullであるかどうかをチェックすることです。そのクラスの大部分のように、かなり無駄です。 – njzk2