Котлин из Java: поле является нулевым или нет?

При доступе к классам Kotlin из Java, возможно ли во время выполнения указать, является ли конкретное поле обнуляемым или нет? Кроме того, можно ли определить, является ли класс классом данных?

Даже догадок было бы достаточно для моих целей. Использование отражения также прекрасное.

Ответы

Ответ 1

Если у вас есть экземпляр java.lang.reflect.Field для свойства, вы можете сначала получить исходное представление Kotlin этого свойства, переведя его в экземпляр kotlin.reflect.KProperty с kotlin.reflect.jvm.ReflectJvmMapping, а затем получить тип и проверить его допустимость или все остальное:

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