检查班级是否为KParameter的有效值

给出以下示例代码

fun function(text: CharSequence) { println(text) } val textParam = ::function.parameters[0] val stringClass = String::class 

如何检查textParam接受stringClass作为参数?

您可以使用KClass来执行以下KClass

 val paramClass = ::function.parameters[0].type.jvmErasure println(stringClass.isSubclassOf(paramClass)) 

或者,另一种解决方案是检查KType

 val paramType = ::function.parameters[0].type println(stringClass.starProjectedType == paramType || // type is String stringClass.allSupertypes.contains(paramType)) // type is a supertype of String