Predicate.not() para negación
Usa Predicate.not() para negar referencias a métodos de forma limpia en lugar de escribir lambdas envolventes.
Comparación de Código
✕ 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();
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Negación más limpia
No es necesario envolver referencias a métodos en lambdas solo para negarlas.
Componible
Funciona con cualquier Predicate, permitiendo cadenas de predicados limpias.
Se lee naturalmente
Predicate.not(String::isBlank) se lee como lenguaje natural.
Enfoque Antiguo
Negación con lambda
Enfoque Moderno
Predicate.not()
Desde JDK
11
Dificultad
Principiante
Soporte JDK
Predicate.not() para negación
Disponible
Disponible desde JDK 11 (septiembre 2018).
Cómo funciona
Antes de Java 11, negar una referencia a método requería envolverla en una lambda. Predicate.not() permite negar cualquier predicado directamente, manteniendo el código legible y consistente con el estilo de referencias a métodos en todo el pipeline del stream.
Documentación Relacionada