如何确定对象是否继承自Kotlin中的某个类?
在测试中:如何确定对象是否继承自Kotlin中的某个类?,kotlin,Kotlin,在测试中: if(v is BaseModel) 如果v是BaseModel类型的直接实例,则将断言true,但 如果v不是BaseModel类型的直接实例,而是从BaseModel继承的,则断言false。如果Kotlin有一个关键字,如果有一个关键字“is from”,那么该关键字将断言为true,这样会更好吗 if(v is from BaseModel) 如果v的类继承自BaseModel,则将断言true 但是Kotlin目前是如何解决这个问题的呢?我猜你问的是如何确定v是否直接继
if(v is BaseModel)
如果v是BaseModel类型的直接实例,则将断言true,但
如果v不是BaseModel类型的直接实例,而是从BaseModel继承的,则断言false。如果Kotlin有一个关键字,如果有一个关键字“is from”,那么该关键字将断言为true,这样会更好吗
if(v is from BaseModel)
如果v的类继承自BaseModel,则将断言true
但是Kotlin目前是如何解决这个问题的呢?我猜你问的是如何确定
v
是否直接继承BaseModel
,而不是通过中间基类继承
如果是这样的话,那么这就可以:
v.javaClass.superclass == BaseModel::class.java
我猜您要问的是如何确定
v
是否直接继承BaseModel
,而不是通过中间基类继承
如果是这样的话,那么这就可以:
v.javaClass.superclass == BaseModel::class.java
正如@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
正如@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
我不确定我是否理解这个问题。你发布的代码正是你想问的,只是有点困惑,不需要“来自”关键字“是”也能做到……我不确定我是否理解这个问题。你发布的代码正是你想问的,只是有点困惑,不需要“is from”关键字“is”也能做到这一点。。。。