Kotlin调用list的addAll添加对象时报错解决方法

本文解决了一个常见的Kotlin编程问题:在尝试将可能为null的集合添加到另一个集合时出现的错误。提供了五种不同的解决方案,并解释了错误产生的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错信息:

Smart cast to ‘List’ is impossible, because ‘data.list’ is a mutable propert that could have been changed by this time
image.png
对应代码:

if (data.list != null) {
    mDataList.addAll(data.list)
 }

原因

Kotlin不允许往集合中添加null值,虽然签名做了空判断,但是怕在调用addAll时对应值仍然被修改为null(脑子有问题)。

解决方案

方式1. data.list?.let(mDataList::addAll)
方式2. data.list?.let { node -> mDataList.addAll(node) }
方式3. data.list?.let { mDataList.addAll(it) }
方式4. mDataList.addAll(data.list ?: return)
方式5.

val temp = data.list
if (temp != null) {
    mDataList.addAll(temp)
}

参考资料

https://stackoverflow.com/questions/44595529/smart-cast-to-type-is-impossible-because-variable-is-a-mutable-property-tha

安卓开发技术分享: https://blog.csdn.net/yinxing2008/article/details/84555061

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值