1. 定义一个变量,如果对它进行赋值操作比如+=,就会报红提示Smart cast to这个错误,代码如下所示:
private var index: Int? = 0
index += 1
百度之后查得是因为kotlin遵循的安全规则,不允许向列表添加Nullable值,语言太严格了。解决方案是用一个val去中间周转一下:
//for solve Smart cast is impossible
val i = index
if (i != null) {
index = i + 1
}
2. 在使用 google serivce location的时候也遇到了这个错误:

解决方法是: 把mSettingsClient = LocationServices.getSettingsClient(this)的赋值操作拿出这个局部函数,比如到onCreate去就好了。

本文探讨了Kotlin中Nullable类型引发的Smartcast错误,包括错误的原因及解决方案,如使用val进行中间周转和调整代码结构。同时,提到了在使用Google Service Location时遇到的类似问题及其解决方法。
1729

被折叠的 条评论
为什么被折叠?



