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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容