2016-12-12 4 views
15

Java에서 Kotlin 클래스에 액세스 할 때 런타임 중에 특정 필드가 nullable인지 여부를 알 수 있습니까? 또한 클래스가 데이터 클래스인지 여부를 알 수 있습니까?Java의 Kotlin : 필드가 nullable인지 아닌지 여부

제 생각으로도 충분할 것입니다. 반사를 사용하는 것도 좋습니다.

+0

프로그래밍 방식으로 또는 시각적으로 표시 하시겠습니까? – nhaarman

+0

@nhaarman 프로그래밍 방식으로 –

+0

['KType.isMarkedNullable'] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-type/index.html)을 사용할 수 있습니다. 그러나 나는 어떻게 Kotlin에서 일종의 변수를 얻을 수 있는지 모르겠습니다. – naXa

답변

20

당신은 속성의 java.lang.reflect.Field 인스턴스가있는 경우 먼저 kotlin.reflect.jvm.ReflectJvmMapping으로 kotlin.reflect.KProperty 인스턴스로 변환하여 속성의 원래 코 틀린 표현을 취득하고 유형을 얻을하고 Null 허용 또는 다른 것을 확인할 수 있습니다

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