Predicate.not() per la negazione
Usa Predicate.not() per negare i riferimenti a metodo in modo pulito invece di scrivere wrapper lambda.
Confronto Codice
✕ 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();
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Negazione più pulita
Non è necessario avvolgere i riferimenti a metodo in lambda solo per negarli.
Componibile
Funziona con qualsiasi Predicate, abilitando catene di predicati pulite.
Lettura naturale
Predicate.not(String::isBlank) si legge come in inglese.
Approccio Vecchio
Negazione lambda
Approccio Moderno
Predicate.not()
Dal JDK
11
Difficoltà
Principiante
Supporto JDK
Predicate.not() per la negazione
Disponibile
Disponibile dal JDK 11 (settembre 2018).
Come funziona
Prima di Java 11, negare un riferimento a metodo richiedeva di avvolgerlo in una lambda. Predicate.not() permette di negare qualsiasi predicato direttamente, mantenendo il codice leggibile e coerente con lo stile dei riferimenti a metodo in tutta la pipeline stream.
Documentazione Correlata