在測試:如果V型BaseModel的直接實例,但會 斷言假,如果v不是類型BaseModel的直接實例,但是從BaseModel繼承如何確定某個對象是否是從Kotlin中的某個類繼承的?
if(v is BaseModel)
將斷言屬實。將是很好,如果有科特林如果有一個關鍵字,將斷言真正的關鍵詞「是」,使得如果V的類是從BaseModel繼承了測試
if(v is from BaseModel)
將斷言屬實。
但是Kotlin目前如何解決這個問題?
在測試:如果V型BaseModel的直接實例,但會 斷言假,如果v不是類型BaseModel的直接實例,但是從BaseModel繼承如何確定某個對象是否是從Kotlin中的某個類繼承的?
if(v is BaseModel)
將斷言屬實。將是很好,如果有科特林如果有一個關鍵字,將斷言真正的關鍵詞「是」,使得如果V的類是從BaseModel繼承了測試
if(v is from BaseModel)
將斷言屬實。
但是Kotlin目前如何解決這個問題?
正如@Krzysztof Kozmic說,你給的例子你問它到底是什麼。只是舉一些例子:
// Built in types
val x: Int = 25
println(x is Number) // true
// Custom types
open class A
open class B : A()
open class C : B()
println(B() is A) // true
println(C() is A) // true
我猜你在問什麼是如何確定v
直接繼承BaseModel
而不是通過中間基類?
如果是這樣的話,那麼這將做到:
v.javaClass.superclass == BaseModel::class.java
我不知道我理解這個問題。您發佈的代碼*確切*您要求的內容 –
剛剛感到困惑,不需要'是'關鍵詞是'也能夠做到這一點.... –