Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Reflection 如何使用KClass反射区分Kotlin中的类和接口_Reflection_Kotlin - Fatal编程技术网

Reflection 如何使用KClass反射区分Kotlin中的类和接口

Reflection 如何使用KClass反射区分Kotlin中的类和接口,reflection,kotlin,Reflection,Kotlin,我使用Kotlins KClass按名称查找类,如下所示: val i: KClass<*> = Class.forName("SampleClass").kotlin 是否存在类似的情况?请注意,对于一般用途而言,构造函数计数解可能不是非常精确。例如,Kotlin包facade类也没有任何构造函数,但它们不是接口(UPD:并且它们的构造函数甚至不能用Kotlin reflect反映,就像匿名类的构造函数一样,KFunction甚至更多) kotlin reflect中没有允许直接

我使用Kotlins KClass按名称查找类,如下所示:

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