array.of将null和undefined视为普通元素原样放入数组,如array.of(null)生成[null]、array.of(undefined)生成[undefined],而array()构造函数对单个正整数参数有特殊长度处理,但对null/undefined仍作元素处理。

Array.of 会把 null 和 undefined 当作普通元素,原样放入数组,不会跳过或特殊处理。
Array.of(null) 和 Array.of(undefined) 都生成长度为 1 的数组
与 Array 构造函数不同,Array.of 不区分参数个数或类型,所有传入参数一律转为数组元素:
-
Array.of(null)→[null](长度 1,唯一元素是null) -
Array.of(undefined)→[undefined](长度 1,唯一元素是undefined) -
Array.of(null, undefined)→[null, undefined](长度 2)
对比 Array() 构造函数:行为完全不同
Array() 对单个数值参数有特殊逻辑,但对 null 或 undefined 不触发该逻辑,仍视作元素:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Array(null)→[null](不是空数组,也不是长度为 null 的数组) -
Array(undefined)→[undefined] -
Array(3)→[empty × 3](这才是特殊行为:仅当参数是**正整数且无其他参数**时才设长度)
所以 Array.of 更一致、更可预测——它不搞“隐式长度推断”,只做“参数到元素”的直译。
实际使用建议
如果你明确想创建含 null 或 undefined 的数组(比如初始化占位、模拟缺失值),Array.of 是安全选择;但要注意它不会帮你过滤或转换:
- 需要过滤空值?手动加
.filter(x => x != null)或类似逻辑 - 需要默认值替代?用
.map(x => x ?? 'default') - 不要误以为
Array.of(null)等价于[]—— 它们语义和行为都不同
不复杂但容易忽略:Array.of 的设计哲学就是“所见即所得”,null 和 undefined 就是合法的数组成员。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










