You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何向可空类型ArrayList成功添加并存储null值

问题原因

标准java.util.ArrayList原生支持存储null元素,你遇到的null值添加后丢失,通常由两个原因导致:

  • 初始化ArrayList时没有显式指定泛型为可空类型,类型推断出现偏差,运行时实际认定的元素类型为非空Int,null值在添加时被过滤
  • 导入的ArrayList不是标准JDK实现,而是第三方库提供的禁止存储null的自定义List实现类
实现方法

方法1:构造时显式声明可空泛型

初始化ArrayList时直接在构造函数上标注泛型为Int?,从类型定义层面明确集合允许存储null值:

var intArray: ArrayList<Int?>? = null
// 构造阶段显式指定可空泛型,避免推断为非空Int类型
intArray = ArrayList<Int?>()

intArray.add(0)
intArray.add(null)
intArray.add(2)

这段代码执行后集合长度为3,调用intArray.get(1)会正常返回null。

方法2:使用Kotlin标准库函数初始化

调用Kotlin标准库提供的arrayListOf<Int?>()创建实例,返回的是明确支持null存储的标准ArrayList对象,写法更简洁:

val intArray = arrayListOf<Int?>()
intArray.add(0)
intArray.add(null)
intArray.add(2)
排查提示

如果按上述写法修改后仍然无法存入null,可以在执行intArray.add(null)后打印该方法的返回值:标准ArrayList的add方法固定返回true,如果返回false,说明当前使用的List实现本身不支持存储null,检查import语句,确认导入的是java.util.ArrayList而非其他同名类即可。

内容的提问来源于stack exchange,提问作者MADi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:12:30