Czy byłby jakiś powód / okoliczność, dla której powinienem używać object == null nad Objects.isNull () w instrukcji if ?
Tak, jednym z powodów jest prostota kodu. Wewnątrz, jeśli stwierdzenie object == null
jest jasne i dobrze znane. Nie może to prowadzić do niewłaściwego zachowania, jeśli na przykład pojawi się literówka.
Rozumiem, że Objects.isNull () wyeliminowałoby możliwość przypadkowego przypisania wartości null do obiektu poprzez pominięcie second =.
Jeśli zostanie pominiętyif (object = null) {}
z, nie będzie się kompilował lub wygeneruje ostrzeżenie w przypadku obiektu! W rzeczywistości nie ma powodu, aby używać instrukcji over within if . Oto dwa warianty obok siebie: =
Boolean
Objects.isNull(object)
object == null
if (object == null) {
}
if (Objects.isNull(object)) {
}
Czy Objects.isNull () powinno być ograniczone wyłącznie do predykatów?
Można powiedzieć, że tak, ogranicza się to wyłącznie do orzeczeń, chociaż nie ma technicznych przeszkód w używaniu Objects.isNull()
wszędzie.
Z public static boolean isNull(Object obj)
javadoc metody:
@apiNote Ta metoda istnieje do wykorzystania jako java.util.function.Predicate, filter (Objects :: isNull)
Więc jeśli używasz metody jak nie orzecznika jesteś rzeczywiście przy bardziej złożonych i uciążliwych ekspresji w porównaniu do prostych object == null
.
Oto fragment, z którego można porównać korzyści 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)
konsekwentnie…