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

Kotlin中校验Map<String,Any>与非空List,有无更优实现方式?

处理List<*>非null校验的方案

针对你需要确保List<*>无null元素的需求,有两种可行方案,具体如下:

方案一:沿用Map的手动过滤+校验逻辑

和你处理Map的思路保持一致,先过滤出非null元素,再校验原列表是否全部符合要求,不符合则抛出异常:

is List<*> -> {
    val nonNullList = value.filterNotNull()
    require(nonNullList.size == value.size) { "List contains null elements" }
    // 调用接收非null列表的方法
    methodForList(nonNullList)
    // 返回对应的AttributeValue
    ...
}

这种方式逻辑清晰,和Map分支的处理风格统一,团队成员看代码时更容易理解。

方案二:使用Kotlin标准库的requireNoNulls()(推荐)

Kotlin的List<*>自带扩展函数requireNoNulls(),它会直接返回一个无null元素的List<Any>,如果原列表包含null,会立即抛出IllegalArgumentException,完全满足你的需求,代码更简洁:

is List<*> -> {
    val nonNullList = value.requireNoNulls()
    // 调用接收非null列表的方法
    methodForList(nonNullList)
    // 返回对应的AttributeValue
    ...
}

这个方法内部的逻辑和手动过滤+校验完全一致,但借助标准库可以减少重复代码,更符合Kotlin的编码习惯。

两种方案都能达到目的,如果你希望和Map分支的处理逻辑完全对齐,选方案一;如果追求代码简洁性和标准库复用,推荐方案二。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:47:25