Gibt es einen Grund / Umstand, aus dem ich object == null über Objects.isNull () in einer if-Anweisung verwenden sollte ?
Ja, ein Grund ist, den Code einfach zu halten. Innerhalb der if-Aussage object == null
ist klar und bekannt. Es kann nicht zu Fehlverhalten führen, wenn beispielsweise ein Tippfehler vorliegt.
Nach meinem Verständnis würde Objects.isNull () die Möglichkeit beseitigen, dem Objekt versehentlich einen Nullwert zuzuweisen, indem das zweite = weggelassen wird.
Wenn ein if (object = null) {}
mit weggelassen wird =
, wird es nicht kompiliert oder es wird eine Warnung im Falle eines Boolean
Objekts generiert ! Eigentlich gibt es keinen Grund zu verwenden , Objects.isNull(object)
über object == null
innerhalb if - Anweisung . Hier sind die beiden Varianten nebeneinander:
if (object == null) {
}
if (Objects.isNull(object)) {
}
Sollte Objects.isNull () ausschließlich auf Prädikate beschränkt sein?
Man könnte sagen, ja, es ist ausschließlich auf Prädikate beschränkt, obwohl es keine technische Hürde gibt, das Objects.isNull()
überall zu nutzen .
Aus dem public static boolean isNull(Object obj)
Javadoc der Methode:
@apiNoteDiese Methode kann als java.util.function.Predicate-Filter (Objects :: isNull) verwendet werden.
Wenn Sie die Methode also nicht als Prädikat verwenden, verwenden Sie tatsächlich einen komplexeren und umständlicheren Ausdruck als den einfachen object == null
.
Hier ist ein Ausschnitt, um den Nutzen von zu vergleichen 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)
konsequent verwenden ...