如何使用KClassreflection来区分Kotlin中的类和接口

我正在使用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 

有这样的事情吗?

请注意,构造函数计数解决方案可能不是非常精确的一般用途。 例如,Kotlin软件包外观类也没有任何构造函数,但它们不是接口(UPD:它们的构造函数甚至不能被kotlin-reflect ,就像匿名类, KFunction和更多的一样)。

kotlin-reflect没有function/属性,可以直接进行检查。 在JVM上,你可以这样做i.java.isInterface或者扩展:

 val KClass<*>.isInterface get() = java.isInterface