ifステートメントでObjects.isNull()よりもobject == nullを使用する必要がある理由/状況はありますか?
はい、1つの理由は、コードを単純に保つことです。ifステートメント 内object == null
は明確でよく知られています。たとえばタイプミスがある場合、それはいかなる不正行為にもつながることはありません。
私の理解では、Objects.isNull()は、2番目の=を省略することにより、誤ってnull値をオブジェクトに割り当てる可能性を排除します。
ある場合if (object = null) {}
と省略し =
、それがコンパイルされませんか、の場合に警告を生成しますBoolean
オブジェクト!実際に使用する理由はありませんObjects.isNull(object)
ifステートメントobject == null
内でする。2つのバリエーションを並べて示します。
if (object == null) {
}
if (Objects.isNull(object)) {
}
Objects.isNull()を述語のみに限定する必要がありますか?
はいと言えますが、Objects.isNull()
どこでも使用するための技術的なハードルはありませんが、述語のみに限定されています。
以下からのpublic static boolean isNull(Object obj)
メソッドのjavadocを:
@apiNoteこのメソッドは、java.util.function.Predicate、filter(Objects :: isNull)として使用するために存在します
したがって、この方法を使用しない場合述語場合、実際には、単純なのに比べて、より複雑で面倒な式を使用していることになりobject == null
ます。
これは、の利点を比較するためのスニペットです Objects.isNull(object)
List<String> list = Arrays.asList("a", "b", null, "c", null);
long countNullsWithPredicate = list.stream().filter(Objects::isNull).count();
long countNullsWithLambda = list.stream().filter(object -> object == null).count();
long countNullsWithAnonymous = list.stream().filter(new Predicate<Object>() {
@Override
public boolean test(Object obj) {
return obj == null;
}
}).count();
if(null == variable)
一貫して使用できます…