Predicate.not() zur Negation
Predicate.not() verwenden, um Methodenreferenzen sauber zu negieren, statt Lambda-Wrapper zu schreiben.
Code-Vergleich
✕ 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();
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Sauberere Negation
Keine Lambda-Wrapper für Methodenreferenzen nur zur Negation nötig.
Kombinierbar
Funktioniert mit jedem Predicate und ermöglicht saubere Prädikat-Ketten.
Natürlich lesbar
Predicate.not(String::isBlank) liest sich wie natürliche Sprache.
Alter Ansatz
Lambda-Negation
Moderner Ansatz
Predicate.not()
Seit JDK
11
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
Predicate.not() zur Negation
Verfügbar
Verfügbar seit JDK 11 (September 2018).
Wie es funktioniert
Vor Java 11 musste eine Methodenreferenz zur Negation in ein Lambda eingewickelt werden. Predicate.not() ermöglicht die direkte Negation eines beliebigen Prädikats, was den Code lesbar und konsistent mit dem Methodenreferenz-Stil im gesamten Stream-Pipeline hält.
Zugehörige Dokumentation