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

Kotlin中如何用?.操作符简化可空数组的空值判断?

问题

我有一个返回数组的方法,需要检查某个索引对应的元素是否已设置。在Java中我会这样写:

if (obj.method() != null && obj.method()[some_index] != null) {
   ...
}

请问能否用Kotlin的?.操作符简化这段代码?我期望的写法类似以下伪代码:

if (obj.method()?.[some_index]) {
   ...
}
回答

完全可以用Kotlin的空安全操作符简化这段逻辑,你给出的伪代码稍作调整就能实现,以下是几种简洁的实现方式:

方案一:直接判断元素非空

通过?.安全访问数组,再判断元素是否不为null,写法和你的伪代码非常接近:

if (obj.method()?.[some_index] != null) {
    // 执行你的业务逻辑
}

也可以用数组的get()方法写法,效果完全一致:

if (obj.method()?.get(some_index) != null) {
    // 执行你的业务逻辑
}

方案二:用let操作符直接处理非空元素

如果需要在条件满足时直接使用该元素,推荐用?.let链式调用,代码更简洁且能直接拿到非空元素:

obj.method()?.[some_index]?.let { nonNullElement ->
    // 这里的nonNullElement就是索引对应的非空元素,可直接使用
}

额外提示:处理索引越界问题

如果some_index可能超出数组的有效范围,需要补充索引合法性判断,避免抛出数组越界异常:

val array = obj.method()
if (array != null && some_index in array.indices && array[some_index] != null) {
    // 安全执行逻辑
}

或者结合空安全操作符简化成链式调用:

obj.method()?.takeIf { some_index in it.indices }?.[some_index]?.let {
    // 同时保证数组非空、索引合法、元素非空
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:20:57