這里暫不考慮基礎(chǔ)類型轉(zhuǎn)換
定義
【引用類型轉(zhuǎn)換】
- 引用類型的類型轉(zhuǎn)換只能發(fā)生父子之間轉(zhuǎn)換
- 子類可以自動轉(zhuǎn)換成父類的對象
- 父類需要強(qiáng)制類型轉(zhuǎn)換才可以轉(zhuǎn)換成子類
使用案例
java
// getDecorView返回的是View類型耸携,而ViewGroup繼承于View翩剪,父類轉(zhuǎn)子類需要強(qiáng)制轉(zhuǎn)化
ViewGroup viewGroup=(ViewGroup)getWindow().getDecorView()
kotlin
// 在kotlin中而是使用as操作符來進(jìn)行轉(zhuǎn)化
val viewGroup=window.decorView as ViewGroup
知識延伸
【不安全的類型轉(zhuǎn)換】
在kotlin中使用as操作符時面睛,如果類型轉(zhuǎn)換不成功會發(fā)生異常TypeCastException驶兜。
一 . null 不可以轉(zhuǎn)換成String匹中,報錯
val y=null
val x:String=y as String
二 . 修改為String?依然會報錯,轉(zhuǎn)換失敗
val y=null
val x:String?=y as String?
【安全的類型轉(zhuǎn)換】
// 使用as?來解決類型轉(zhuǎn)換異常問題郎楼,如果轉(zhuǎn)換失敗死嗦,則會返回null,但不會報錯發(fā)生異常
val y=null
val x:String?=y as? String