kotlin类型转换 - as

这里暂不考虑基础类型转换

定义

【引用类型转换】

  1. 引用类型的类型转换只能发生父子之间转换
  2. 子类可以自动转换成父类的对象
  3. 父类需要强制类型转换才可以转换成子类

使用案例

java


// getDecorView返回的是View类型,而ViewGroup继承于View,父类转子类需要强制转化
ViewGroup viewGroup=(ViewGroup)getWindow().getDecorView()

kotlin


// 在kotlin中而是使用as操作符来进行转化
val viewGroup=window.decorView as ViewGroup

知识延伸

【不安全的类型转换】
在kotlin中使用as操作符时,如果类型转换不成功会发生异常TypeCastException

一 . null 不可以转换成String,报错
val y=null
val x:String=y as String
二 . 修改为String?依然会报错,转换失败
val y=null
val x:String?=y as String?

【安全的类型转换】

// 使用as?来解决类型转换异常问题,如果转换失败,则会返回null,但不会报错发生异常
val y=null
val x:String?=y as? String

你可能感兴趣的:(kotlin类型转换 - as)