mutable property that could have been changed by this time
2023-12-20 07:24:02
情形:
网络请求json数据,本地创建实体类接收json,实体类中的变量为var可变类型,将实体类的变量赋值给一个局部变量,将局部变量作为参数传给其它方法时,遇到一个问题 :
? ”Smart cast to 'String' is impossible, because 'data.name' is a mutable property that could have been changed by this time“ ,认为这个变量是可变的传参这个时候可能是null了,做非空判断;
即:网络获取 json ,定义 data class LocalData(var name),
val localDataBean = Gson().fromJson(json,Object:TypeToken<LocalData>(){}.Type())
function sS(ss:String){}
var ss =?localDataBean.name
sS(ss)
这种情况下就会认为 ss可能在这个时间已经变成null了,无法传递给函数 sS;
原因:
对象中的可变变量此刻可能为null,而函数需要的是非null变量,
? ? ? ??即使是这样:
? ? ? ? ?var temp = if(data.name != null){ data.name} else ""
依然会有这个问题,因为无法确定if语句块在判断之后,变量再赋值会不会变为null;
解决:
只能这样写,var temp = data.name? ?if(temp == null){temp = ""},要先赋值再判断。
只有这样才能确定,在if语句块判断之后,变量不会变为null
文章来源:https://blog.csdn.net/ysthuigui/article/details/135095708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!