やること
Kotlin
のリフレクションで取れるKType
からKClass
を取得します。
やり方
例として、ラムダから引数のKClass
を取る例を示します。
val lambda: (String?) -> Any? = { /* ラムダの内容は省略 */ }
val reflect: KFunction<Any?> = lambda.reflect()!!
val kType: KType = reflect.parameters.first().type
val classifier = type.classifier!!
// 実際にはKClass<String>が取れる
val kClass: KClass<*> = classifier as KClass<*>
実際にはKClass<String>
が取れてしまって(= nullability
の情報が消えて)いますが、一応KClass
が取得できました。