Predicate.not() do negacji
Używaj Predicate.not() do negowania referencji do metod bez pisania wrapperów lambda.
Porównanie kodu
✕ Java 8
List<String> nonEmpty = list.stream()
.filter(s -> !s.isBlank())
.collect(Collectors.toList());
✓ Java 11+
List<String> nonEmpty = list.stream()
.filter(Predicate.not(String::isBlank))
.toList();
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Czystsza negacja
Nie trzeba owijać referencji do metod w lambdy tylko po to, żeby je negować.
Kompozycyjny
Działa z dowolnym Predicate, umożliwiając czyste łańcuchy predykatów.
Czyta się naturalnie
Predicate.not(String::isBlank) czyta się jak angielski.
Stare podejście
Negacja lambda
Nowoczesne podejście
Predicate.not()
Od JDK
11
Poziom trudności
Początkujący
Wsparcie JDK
Predicate.not() do negacji
Dostępne
Dostępne od JDK 11 (wrzesień 2018)
Jak to działa
Przed Java 11 negowanie referencji do metody wymagało owinięcia jej w lambdę. Predicate.not() pozwala negować dowolny predykat bezpośrednio, zachowując czytelność i spójność z stylem referencji do metod w potoku strumienia.
Powiązana dokumentacja
Dowód