2016-12-12 16 views
15

Khi truy cập các lớp Kotlin từ Java, có thể nào trong thời gian chạy để biết một trường cụ thể có nullable hay không? Ngoài ra, có thể cho biết một lớp là một lớp dữ liệu không?Kotlin từ Java: là trường nullable hay không?

Thậm chí có thể đoán là đủ cho mục đích của tôi. Sử dụng sự phản chiếu cũng tốt.

+0

Bạn có muốn lập trình hoặc chỉ trực quan không? – nhaarman

+0

@nhaarman theo chương trình –

+0

Bạn có thể sử dụng ['KType.isMarkedNullable'] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-type/index.html). Nhưng tôi không biết làm thế nào bạn có thể nhận được một loại biến trong Kotlin. – naXa

Trả lời

20

Nếu bạn có một trường hợp java.lang.reflect.Field cho một bất động sản, đầu tiên bạn có thể có được Kotlin đại diện ban đầu của tài sản bằng cách chuyển đổi nó vào kotlin.reflect.KProperty dụ với kotlin.reflect.jvm.ReflectJvmMapping, và sau đó nhận được các loại và kiểm tra nullability hoặc bất cứ thứ gì của nó:

public static boolean isNullable(Field field) { 
    KProperty<?> property = ReflectJvmMapping.getKotlinProperty(field); 
    return property.getType().isMarkedNullable(); 
} 
Các vấn đề liên quan