当使用inline和reified的时候,我可以可以获取真实的KClass,但KClass是没有可空概念的。
String和String?的KClass是同一个。
这个时候如果我想判断传进来的类型是String还是String?该怎么办?
inline fun <reified T> test(){
val kType = typeOf<T>()
println(kType.isMarkedNullable)
}
fun main() {
test<String>()
test<String?>()
}
使用typeof,把T转成KType即可,KType是封装过的KClass,包含了是否可空的信息。