检查班级是否为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