Kotlin 如何判断泛型参数是否可空

2021-12-31  本文已影响0人  Gascognya

当使用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,包含了是否可空的信息。

上一篇下一篇

猜你喜欢

热点阅读