1、在kotlin这中,定义如下类型,在判断不为null的语句里边,会发生类型转换:
fun main(){var a:String? = "XXX" // a 类型为 String? 可能为 null// 在if 语句中,a 的类型为 Stringif(a != null){println(a.length)}// 在下边的代码逻辑,a 的类型为 String?
}
2、不支持的只能转换情况:
定义全局变量时,不会进行智能类型转换
var a:String? = "XXX" // a 类型为 String? 可能为 null
fun main(){// 虽然判断不为空,但其他线程可能修改 a 的值,所以代码编译不会通过if(a != null){println(a.length)}
}