通过反射查找可空属性

ato*_*tok 5 kotlin

有没有办法列出允许返回空值的对象的所有属性?

val cls = javaClass<T>().kotlin

for(property in cls.properties) {
    if(property.accessible) {
        //Is it nullable?

    }
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*lov 9

您正在寻找的API是在最新的Kotlin版本(0.13.213+)中引入的.您现在可以获取属性的类型,并查明它是否在源代码中标记为可为空:

val property = ...
if (property.returnType.isMarkedNullable) {
    ...
}
Run Code Online (Sandbox Code Playgroud)