当从Java访问Kotlin类时,是否可以在运行时判断特定字段是否可以为空?另外,是否可以判断一个类是否是数据类?

就我的目的而言,一个猜测就足够了.使用反射也很好.

推荐答案

如果某个属性的实例为java.lang.reflect.Field,则可以首先通过将其转换为具有kotlin.reflect.jvm.ReflectJvmMappingkotlin.reflect.KProperty实例来获取该属性的原始Kotlin表示形式,然后获取类型并判断其是否为空或其他任何内容:

public static boolean isNullable(Field field) {
    KProperty<?> property = ReflectJvmMapping.getKotlinProperty(field);
    return property.getType().isMarkedNullable();
}

Kotlin相关问答推荐

解决Microronaut中多个可能的Bean候选者冲突

限制通用Kotlin枚举为特定类型

为什么Kotlin有次构造函数和init块?

在 kotlin 原始字符串中转义三重引号

为什么 Kotlin 中的 Double 和 Long 类型不推荐直接转换为 Char?

为什么 Kotlin 在 sumOf 函数 lambda 中默认不将数字视为Int?

正则表达式 FindAll 不打印结果 Kotlin

如何从 kotlin 中的数据类访问 val?

Dagger 2 ContributesAndroidInjector 为模块提供活动

JobIntentService 被销毁,当应用程序被销毁时

Koin Android:org.koin.error.NoBeanDefFoundException

更新到版本4.10.1/4.10.2后 Gradle 同步失败

ObserveForver是否了解生命周期?

在Kotlin中使用@Service时引发异常

Kotlin中OnclickListener方法之间的差异

kotlin中的全局可拓函数

Android studio 4.0 新更新版本说 Kotlin 与这个新版本不兼容

用 kotlin 学习 Android MVVM 架构组件

var str:String是可变的还是不可变的?

Android room DAO 接口不适用于继承