报错信息:

Smart cast to ‘List’ is impossible, because ‘data.list’ is a mutable propert that could have been changed by this time

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

对应代码:

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