1、在kotlin这中,定义如下类型,在判断不为null的语句里边,会发生类型转换:


fun main(){
    var a:String? = "XXX" // a 类型为 String? 可能为 null
    // 在if 语句中,a 的类型为 String
    if(a != null){
        println(a.length)
    }
    // 在下边的代码逻辑,a 的类型为 String?
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.


2、不支持的只能转换情况:

定义全局变量时,不会进行智能类型转换


var a:String? = "XXX" // a 类型为 String? 可能为 null
fun main(){
    // 虽然判断不为空,但其他线程可能修改 a 的值,所以代码编译不会通过
    if(a != null){
        println(a.length)
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.


kotlin智能类型转换_类型转换