Javaでは、いくつかのフィールドをnull
にすることができるクラスを使用します。たとえば:compare()のnullフィールドをどうすればいいですか?
class Foo {
String bar;
//....
}
私はこのクラスのBarComparatorを書きたい、
private static class BarComparator
implements Comparator<Foo> {
public int compare(final Foo o1, final Foo o2)
{
// Implementation goes here
}
}
はo1
のいずれか、o2
、o1.bar
、o2.bar
をすることができるという事実に対処するための標準的な方法はありますnull
、たくさんのネストを書くことなくif
... else
?
乾杯!
オフトピックですが、MIN/MAX_VALUEよりも/ - 1を優先させる理由は何ですか? –
応答が遅れて申し訳ありません。これは、三角不等式を確実にするためです。 a> b> cの場合、a.compareTo(b)+ b.compareTo(c)<= a.compareTo(c)。誰も気にしないでしょう... –
o1/o2がnullの場合でも、依然として 'NullPointerException'を投げることができます。あなたはo1/o2をnullと扱うべきですか? OPの記載:o1、o2、o1.bar、o2.barはnullでもかまいません。あるいは、コンパレータ契約の一部です:ヌルを比較するとNPEを投げるべきですか? – Daniel