kotlin中is,!is,as,as?運算符

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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索