Y aurait-il une raison / circonstance pour laquelle je devrais utiliser object == null sur Objects.isNull () dans une instruction if ?
Oui, une des raisons est de garder le code simple. Dans si la déclaration object == null
est claire et bien connue. Cela ne peut conduire à aucune mauvaise conduite si par exemple il y a une faute de frappe.
Je crois comprendre que Objects.isNull () supprimerait le risque d'attribuer accidentellement une valeur nulle à object en omettant le second =.
S'il y a un if (object = null) {}
avec omis, =
il ne se compilera pas ou il générera un avertissement en cas d' Boolean
objet! En fait, il n'y a aucune raison d'utiliser Objects.isNull(object)
l' instruction over object == null
within if . Voici les deux variantes côte à côte:
if (object == null) {
}
if (Objects.isNull(object)) {
}
Objects.isNull () doit-il être limité aux prédicats exclusivement?
On pourrait dire oui, cela se limite exclusivement aux prédicats, bien qu'il n'y ait pas d'obstacle technique à utiliser Objects.isNull()
partout.
Depuis le public static boolean isNull(Object obj)
javadoc de la méthode:
@apiNote Cette méthode existe pour être utilisée comme java.util.function.Predicate, filter (Objects :: isNull)
Donc, si vous utilisez la méthode comme pas un prédicat, vous utilisez en fait une expression plus complexe et plus encombrante que la simple object == null
.
Voici un extrait de code pour comparer les avantages de 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)
cohérente…