在测试中:
if(v is BaseModel)
如果v是BaseModel类型的直接实例,将断言为true 如果v不是BaseModel类型的直接实例但是从BaseModel继承,则断言false。如果Kotlin有一个关键字,如果有一个关键词'来自'那么测试
,那么它会不会很好if(v is from BaseModel)
如果v的类继承自BaseModel,将断言为真。
但Kotlin目前如何解决这个问题?
答案 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