Ci sarebbe una ragione / circostanza per cui dovrei usare object == null su Objects.isNull () in un'istruzione if ?
Sì, uno dei motivi è mantenere il codice semplice. Entro if object == null
è chiara e ben nota. Non può portare a comportamenti scorretti se ad esempio c'è un errore di battitura.
La mia comprensione è che Objects.isNull () eliminerebbe la possibilità di assegnare accidentalmente un valore nullo all'oggetto omettendo il secondo =.
Se è presente un if (object = null) {}
con omesso =
non verrà compilato o genererà un avviso in caso di Boolean
oggetto! In realtà non v'è alcun motivo per utilizzare Objects.isNull(object)
nel corso object == null
all'interno di if . Ecco le due varianti affiancate:
if (object == null) {
}
if (Objects.isNull(object)) {
}
Objects.isNull () dovrebbe essere limitato esclusivamente a Predicates?
Si potrebbe dire di sì, è limitato esclusivamente ai Predicati, sebbene non ci siano ostacoli tecnici per utilizzare il Objects.isNull()
ovunque.
Dal public static boolean isNull(Object obj)
javadoc del metodo:
@apiNote Questo metodo esiste per essere utilizzato come java.util.function.Predicate, filter (Objects :: isNull)
Quindi, se usi il metodo come non predicato, stai effettivamente usando un'espressione più complessa e ingombrante rispetto al sempliceobject == null
.
Ecco uno snippet per confrontare i vantaggi di 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)
coerente ...