这里暂不考虑基础类型转换
定义
【引用类型转换】
- 引用类型的类型转换只能发生父子之间转换
- 子类可以自动转换成父类的对象
- 父类需要强制类型转换才可以转换成子类
使用案例
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