代码对比
✕ 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();
发现此代码有问题? 告诉我们。
为什么现代方式更好
更简洁的否定
无需仅为否定而将方法引用包装在 lambda 中。
可读性强
Predicate.not(String::isBlank) 清晰地表达意图。
可组合
与其他 Predicate 方法如 and()、or() 配合使用。
旧方式
Lambda 否定
现代方式
Predicate.not()
自 JDK
11
难度
入门
JDK 支持
用 Predicate.not() 进行否定
可用
自 JDK 11 起可用(2018 年 9 月)。
工作原理
Java 11 之前,否定方法引用需要将其包装在 lambda 中。Predicate.not() 允许直接否定方法引用,保持代码简洁。
相关文档