Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
objects::isnull可直接作为predicate用于stream.filter筛选null元素,因其静态方法签名boolean isnull(object)与predicate.test(t)完全匹配;它只判空引用,不处理空字符串或集合,且比x->x==null更安全规范。

可以直接用 Objects::isNull 作为方法引用,配合 Stream.filter() 快速筛选出集合中为 null 的元素。
为什么 Objects::isNull 能直接用作 Predicate
Objects::isNull 是一个静态方法引用,签名是 boolean isNull(Object obj),恰好匹配函数式接口 Predicate<t></t> 的抽象方法 test(T t) —— 参数类型一致(Object),返回类型也一致(boolean)。所以它可直接用于 filter。
常见写法示例
- 从字符串列表中找出所有
null元素:
List<string> list = Arrays.asList("a", null, "b", null);<br>list.stream().filter(Objects::isNull).collect(Collectors.toList()); // 返回 [null, null]</string>
- 对对象数组做类似操作:
String[] arr = {"hello", null, "world"};<br>Arrays.stream(arr).filter(Objects::isNull).toArray(String[]::new); // 返回 [null]
注意点和易错情况
- 它筛选的是
null本身,不是“空字符串”或“空集合”。Objects::isNull只判断引用是否为null,不调用isEmpty()或其他逻辑 - 如果想筛出非
null的项,用Objects::nonNull更清晰,语义明确且避免!Objects::isNull这种写法(编译不通过,方法引用不能加取反) - 在
filter中直接写Objects::isNull即可,不需要额外包装成 lambda 或匿名类
替代写法对比
等价于写 lambda:x -> Objects.isNull(x),但方法引用更简洁、可读性更强;比 x -> x == null 更安全(不触发 NPE,且语义更规范)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










