反射类型
::class
取得的是KClass
,而::class.java
和::javaClass
取得的是Java
的Class
。
像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/