अगर मेरे पास कोटलिन में एक क्लास है:

class Foo{

var x= null
var y=null

}

मैं जांचना चाहता हूं कि इनमें से कौन सा सदस्य प्रतिबिंब के माध्यम से रनटाइम पर सेट किया गया है। मैं उन पर पुनरावृति कर सकता हूं और जावा में शून्य की जांच कर सकता हूं।

Foo foo= new Foo();

//this gives me the value of foo.x
Foo.class.getDeclaredField("x").get(foo);

मैं कोटलिन / नेटिव में ऐसा कैसे कर सकता हूं? मुझे पता है कि मैं इसे एंड्रॉइड में हासिल कर सकता हूं

Foo::class.java.getDeclaredField("x").get(foo)

लेकिन यह मूल वातावरण में काम नहीं करता है।

0
Nishita 22 अक्टूबर 2018, 14:48

1 उत्तर

सबसे बढ़िया उत्तर

मैं सिर्फ दस्तावेज़ीकरण से जा रहा हूं, इसलिए नीचे थोड़ा गलत हो सकता है, लेकिन आप इसे आजमा सकते हैं:

val prop : KCallable = Foo::class.members.firstOrNull { it.name == "x" }
if (prop != null) {
   val xValue : Int? = prop.call(object)
    //you have to declare the type of the xValue
}
1
Cruces 22 अक्टूबर 2018, 12:52