2016-12-12 4 views
15

जावा से कोटलिन कक्षाओं तक पहुंचने पर, क्या रनटाइम के दौरान यह बताने के लिए संभव है कि कोई विशेष फ़ील्ड शून्य हो या नहीं? साथ ही, क्या यह बताना संभव है कि कक्षा एक डेटा क्लास है या नहीं?जावा से कोटलिन: फ़ील्ड शून्य या नहीं है?

यहां तक ​​कि एक अनुमान भी मेरे उद्देश्यों के लिए पर्याप्त होगा। प्रतिबिंब का उपयोग करना भी ठीक है।

+0

क्या आप प्रोग्रामेटिक रूप से या केवल दृष्टि से देखना चाहते हैं? – nhaarman

+0

@narman प्रोग्रामेटिक रूप से –

+0

आप शायद ['KType.isMarkedNullable'] (https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-type/index.html) का उपयोग कर सकते हैं। लेकिन मुझे नहीं पता कि आप कोटलिन में एक प्रकार का चर कैसे प्राप्त कर सकते हैं। – naXa

उत्तर

20

आप एक संपत्ति के लिए एक java.lang.reflect.Field उदाहरण है, तो आप पहले kotlin.reflect.jvm.ReflectJvmMapping साथ kotlin.reflect.KProperty उदाहरण के लिए यह परिवर्तित करके संपत्ति का मूल Kotlin प्रतिनिधित्व प्राप्त कर सकते हैं, और उसके बाद प्रकार मिलता है और उसके nullability या कुछ और की जाँच करें:

public static boolean isNullable(Field field) { 
    KProperty<?> property = ReflectJvmMapping.getKotlinProperty(field); 
    return property.getType().isMarkedNullable(); 
} 
संबंधित मुद्दे