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

Java转Kotlin 2.1.20:如何创建非空Object类型数组?

Kotlin中将非空元素ArrayList转为非空Object数组的解决方案

已知ArrayList list 包含N个非空Object,要转换为Array<Object>而非Array<Object?>,可以通过以下几种方式实现:

1. 最优方案:直接使用Array构造函数初始化

利用Kotlin的Array构造函数,直接基于list的元素生成非空数组,一步到位:

val array: Array<Object> = Array(N) { list.removeAt(0) }

原理:构造函数的初始化lambda会返回list.removeAt(0)的结果(已知为非空Object),编译器会自动推断数组类型为Array<Object>,无需处理可空中间态。

2. 从可空数组转换为非空数组

如果已经通过arrayOfNulls创建了可空数组,可通过以下两种安全方式转换:

方式一:使用requireNoNulls()校验并转换

该方法会检查数组中是否存在null元素,确认无null后返回非空类型数组(若有null则抛出异常):

val nullableArray: Array<Object?> = arrayOfNulls(N)
for (i in 0..<N) nullableArray[i] = list.removeAt(0)
val array: Array<Object> = nullableArray.requireNoNulls()

方式二:unchecked cast(谨慎使用)

若能100%确认数组中无null元素,可通过强制转换跳过编译检查,但需添加注解抑制unchecked cast警告:

@Suppress("UNCHECKED_CAST")
val array: Array<Object> = arrayOfNulls(N) as Array<Object>
for (i in 0..<N) array[i] = list.removeAt(0)

注意:这种方式会绕过Kotlin的类型安全检查,若后续代码意外向数组中插入null,会导致运行时问题,仅在场景明确时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:37:42