reflection - 获取可空类型的类

标签 reflection kotlin kotlin-reflect

我试图匹配可空类型 String?在 Kotlin 反射(reflection)练习中:

data class Test(a: String, b: String?)
val test = Test("1", "2")
val properties = test::class.declaredMemberProperties
val propertyNames = properties.joinToString(",") { 
        when (it.returnType) {
            String?::class.createType() -> "string?"
            String::class.createType() -> "string"
            else -> throw Exception()
        }
}

唉,它因错误而失败,Type in a class literal must not be nullable , 为 String?::class .

最佳答案

createType函数有一个可选的可为空的参数,当我测试它时似乎可以工作。

import kotlin.reflect.full.*

String::class.createType(nullable = true) -> "string?"

关于reflection - 获取可空类型的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489204/

相关文章:

kotlin - 从Kotlin箭头的任何一种类型中提取值并将其分配给const

android - 在android中实现MVVM时对网络层的错误处理感到困惑,如何通知用户有问题?

powershell - 在PowerShell Core中获取目标框架属性

javascript - 确定 JavaScript 对象实例类的名称

java - 使用 GSON 反序列化嵌套的通用类时的奇怪行为

java - Kotlin与Proguard的反射(reflection)失败

kotlin - 从 kotlin 中的嵌套类型参数获取类

go - 如何在 Golang 中将 ast.TypeSpec 断言为 int 类型?

kotlin - 为什么 BiPredicate.test 方法在 Kotlin 中不可见?

kotlin - 对属性 setter 的方法引用