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

如何验证Kotlin列表无空元素并转换为非空列表?

Kotlin:安全转换含可空元素的List<Int?>为List

需求:检查List<Int?>中是否存在空值,若列表无空值则转换为List<Int>,否则返回emptyList()。

初始实现

你最初的写法虽能实现需求,但代码繁琐且依赖强制类型转换,不够地道:

var noNullElements: List<Int> = emptyList()
if (listWithPossibleNullElements.all { it != null }) {
    noNullElements = listWithPossibleNullElements as List<Int>
}
// 使用noNullElements列表进行操作

更简洁优雅的优化方案

借助Kotlin标准库方法,可以写出符合语言风格的实现:

fun getSafeList(list: List<Int?>): List<Int> = if (null in list) emptyList() else list.requireNoNulls()

方案说明

  • null in list是判断列表是否含空值的直观写法,比all { it != null }更简洁易读
  • requireNoNulls()是标准库提供的集合方法,确认列表无空值时会安全将List<Int?>转为List<Int>;由于我们已提前排除空值存在的情况,不会触发该方法的非空校验异常
  • 采用表达式函数体写法,让代码更紧凑,贴合Kotlin的惯用风格

如果不需要单独封装函数,也可以直接在调用处内联使用:

val safeList = if (null in listWithPossibleNullElements) emptyList() else listWithPossibleNullElements.requireNoNulls()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:50:37