Reflection 如何使用KClass反射区分Kotlin中的类和接口
我使用Kotlins KClass按名称查找类,如下所示:Reflection 如何使用KClass反射区分Kotlin中的类和接口,reflection,kotlin,Reflection,Kotlin,我使用Kotlins KClass按名称查找类,如下所示: val i: KClass<*> = Class.forName("SampleClass").kotlin 是否存在类似的情况?请注意,对于一般用途而言,构造函数计数解可能不是非常精确。例如,Kotlin包facade类也没有任何构造函数,但它们不是接口(UPD:并且它们的构造函数甚至不能用Kotlin reflect反映,就像匿名类的构造函数一样,KFunction甚至更多) kotlin reflect中没有允许直接
val i: KClass<*> = Class.forName("SampleClass").kotlin
是否存在类似的情况?请注意,对于一般用途而言,构造函数计数解可能不是非常精确。例如,Kotlin包facade类也没有任何构造函数,但它们不是接口(UPD:并且它们的构造函数甚至不能用
Kotlin reflect
反映,就像匿名类的构造函数一样,KFunction
甚至更多)
kotlin reflect
中没有允许直接检查的函数/属性。在JVM上,您可以通过i.java.isInterface
或进行扩展:
val KClass<*>.isInterface get() = java.isInterface
val KClass.isInterface get()=java.isInterface
您是否多次重复使用此代码?如果是这样,请尝试创建自己的i.isInterface()
函数。答案不是这样,但为什么不简单地使用SampleClass::class获取KClass@s1m0nw1我将类的名称作为一个参数传递,该参数是一个字符串。执行input::class
返回字符串类的详细信息,而不是我实际要查找的内容。@fin444我确实执行了。上面的代码片段只是一个示例。
i.isInterface
val KClass<*>.isInterface get() = java.isInterface