Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定对象是否继承自Kotlin中的某个类?_Kotlin - Fatal编程技术网

如何确定对象是否继承自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”也能做到这一点。。。。