检查 class 是否为 KParameter 的有效值
Check if class is a valid value for KParameter
给定以下示例代码
fun function(text: CharSequence) {
println(text)
}
val textParam = ::function.parameters[0]
val stringClass = String::class
如何检查 textParam
是否接受 stringClass
作为参数?
您可以使用 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
给定以下示例代码
fun function(text: CharSequence) {
println(text)
}
val textParam = ::function.parameters[0]
val stringClass = String::class
如何检查 textParam
是否接受 stringClass
作为参数?
您可以使用 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