Dim*_*ims 2 reflection inheritance superclass kotlin
如果 Kotlin 不允许多重继承,那为什么要KClass<*>.superclasses返回一个列表呢?如何找到那个单一的超类?
根据文档,superclasses包含此类的直接超类,按照它们在源代码中列出的顺序排列。包括类的超类和超接口,但不包括类本身。
事实上, Kotlinclass可能只继承单个超类,但可能实现多个超接口。
借用StackOverflow 上的另一个问题/答案,类似下面的内容可能会起作用。但是,我没有对此进行测试。
val KClass<*>.isInterface: Boolean
get() = java.isInterface
val KClass<*>.superclass: KClass<*>
get() = superclasses.filterNot { it.isInterface }.single()
Run Code Online (Sandbox Code Playgroud)