最清晰安全的数组判空方式是先检查 arr == null,再判断 arr.length > 0;优先返回空数组而非 null;可配合 optional 或工具类简化,但本质不变。

直接检查数组引用是否为 null,再结合长度判断,是最清晰、最不易出错的方式。
先判 null,再用 length
Java 中数组是对象,声明但未初始化时值为 null。直接访问 arr.length 或下标会触发 NullPointerException。务必把 null 检查放在最前面:
if (arr == null) { /* 处理空引用 */ }- 确认不为
null后,再安全使用arr.length或遍历 - 不要写成
if (arr != null && arr.length > 0)以外的顺序——短路逻辑依赖这个顺序
用 Optional 包装(适合 API 返回场景)
当方法可能返回空数组引用时,改用 Optional<int></int> 明确表达“可能无值”,调用方必须显式处理:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
return Optional.ofNullable(arr);- 调用侧:
optional.orElse(new int[0])或optional.ifPresent(this::process) - 避免把 null 隐蔽传递下去,强制调用方面对可能性
约定返回空数组而非 null
多数情况下,返回 new int[0] 比返回 null 更安全、更符合直觉:
- 空数组可直接遍历(循环零次)、调用
length,不会崩溃 - 构造器或工厂方法中主动防御:
return arr == null ? new int[0] : arr; - 团队内统一规范,减少下游重复判空负担
工具类辅助判空(简化重复代码)
用 Objects.nonNull() 或 Apache Commons 的 ArrayUtils.isNotEmpty() 可提升可读性,但本质仍是 null + length 检查:
if (Objects.nonNull(arr) && arr.length > 0)-
if (ArrayUtils.isNotEmpty(arr))(需引入 commons-lang3) - 注意:这些只是语法糖,不能替代对 null 语义的理解
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










