1.is運算符和 !is 運算符
kotlin中API提供的 is 運算符相似於Java中的 instanceof 關鍵字的用法。is 運算符能夠檢查對象是否與特定的類型兼容(兼容:此對象是該類型,或者派生類),同時也用來檢查對象(變量)是否屬於某數據類型(如Int、String、Boolean等)。 !is運算符是它的否認形式。java
val mAccount = "秦川小將"
println(mAccount is String)
輸出:web
truesvg
val mAccount = "秦川小將"
println(mAccount !is String)
輸出:ui
falsespa
2.as運算符和as?運算符
as運算符用於執行引用類型的顯式類型轉換。若是要轉換的類型與指定的類型兼容,轉換就會成功進行;若是類型不兼容,使用as?運算符就會返回值null。在Kotlin中,父類是禁止轉換爲子類型的。.net
open class Fruit
open class Apple(name: String) : Fruit()
//
val mFruit = Fruit()
val mApple = Apple("蘋果")
//
println(mFruit as Apple)
上面這種用法會報:java.lang.ClassCastException異常code
open class Fruit
open class Apple(name: String) : Fruit()
//
val mFruit = Fruit()
val mApple = Apple("蘋果")
//
println(mFruit as? Apple)
輸出:xml
null對象
open class Fruit
open class Apple(name: String) : Fruit()
//
val mFruit = Fruit()
val mApple = Apple("蘋果")
//
println(mApple as Fruit)
輸出:get
Apple@1d81eb93
父類轉換爲子類是對OOP的嚴重違反,不推薦使用,父類是不能轉換爲子類的,子類包含了父類全部的方法和屬性,而父類則未必具備和子類一樣成員範圍,因此這種轉換是不被容許的,即使是兩個具備父子關係的空類型,也是如此。
本文分享 CSDN - 秦川小將。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。