如何获取 Kotlin 中反射类的超类?

Dim*_*ims 2 reflection inheritance superclass kotlin

如果 Kotlin 不允许多重继承,那为什么要KClass<*>.superclasses返回一个列表呢?如何找到那个单一的超类?

End*_*eit 5

根据文档,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)