跳到主要内容

反射类型

::class取得的是KClass,而::class.java::javaClass取得的是JavaClass。 像suspend这种只在Kotlin里存在的方法只能通过KClass取到。

val functions = sut::class.declaredMemberFunctions

在反射里可以取得的变量类型有两种,一种是即将在被JVM擦除的,Kotlin的类型。

sut::class.declaredMemberFunctions
.filter { it.valueParameters[0].type.jvmErasure == String::class }

还有一种是Java的类型。

it.type.javaType

参考:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect.jvm/