我正在使用Kotlins KClass按名称查找类:
val i: KClass<*> = Class.forName("SampleClass").kotlin
但是,我想省略接口。到目前为止,我通过构造函数区分接口和类。
val i: KClass<*> = Class.forName(input).kotlin
if (i.constructors.isEmpty()){
println("This is an interface")
}else{
println("This is a class")
}
我认为它不是很干净。
我正在寻找一些东西i.isInterface
这样的事情是否存在?
答案 0 :(得分:5)
请注意,计算解决方案的构造函数可能不是非常精确用于通用目的。例如,Kotlin包外观类也没有任何构造函数,但它们不是接口(UPD:它们的构造函数甚至不能用kotlin-reflect
反映,就像匿名类KFunction
那样更多)。
kotlin-reflect
中没有允许直接检查的功能/属性。在JVM上,您可以将其作为i.java.isInterface
或进行扩展:
val KClass<*>.isInterface get() = java.isInterface