2016-12-12 11 views
15

Podczas uzyskiwania dostępu do klas Kotlin z języka Java, czy w czasie wykonywania można stwierdzić, czy określone pole jest puste, czy też nie? Czy możliwe jest również określenie, czy dana klasa jest klasą danych?Kotlin z Java: czy jest pole zerowe czy nie?

Nawet przypuszczenie wystarczyłoby dla moich celów. Korzystanie z odbicia też jest w porządku.

+0

Czy chcesz programowo lub po prostu wizualnie? – nhaarman

+0

@nhaarman programowo –

+0

Prawdopodobnie możesz użyć ['KType.isMarkedNullable'] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-type/index.html). Ale nie wiem, jak można uzyskać rodzaj zmiennej w Kotlin. – naXa

Odpowiedz

20

Jeśli masz instancję java.lang.reflect.Field do nieruchomości, można najpierw uzyskać oryginalną reprezentacji Kotlin nieruchomości poprzez przekształcenie go do instancji kotlin.reflect.KProperty z kotlin.reflect.jvm.ReflectJvmMapping, a następnie uzyskać typ i sprawdzić jej opcje dopuszczania wartości null lub cokolwiek innego:

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