如何确定某个对象是否是从Kotlin中的某个类继承而来的?

时间:2017-03-25 00:51:24

标签: kotlin

在测试中:

if(v is BaseModel)
如果v是BaseModel类型的直接实例,

将断言为true 如果v不是BaseModel类型的直接实例但是从BaseModel继承,则断言false。如果Kotlin有一个关键字,如果有一个关键词'来自'那么测试

,那么它会不会很好
if(v is from BaseModel)
如果v的类继承自BaseModel,

将断言为真。

但Kotlin目前如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

我猜你要问的是如何确定v 是否直接继承BaseModel而不是通过中间基类?

如果是这种情况,那么这样做:

v.javaClass.superclass == BaseModel::class.java

答案 1 :(得分:1)

正如@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