मैं createInstance()
का उपयोग करने में असमर्थ हूं। उदाहरण के लिए, Foo::class.createInstance()
मेरे पास कोटलिन 1.3.70 kotlin("jvm") version "1.3.70"
प्लगइन का उपयोग करके एक ग्रेडल प्रोजेक्ट है। और मेरी निर्भरता में implementation(kotlin("stdlib-jdk8"))
और implementation(kotlin("reflect"))
हैं।
क्या किसी को पता है कि यह फ़ंक्शन गायब क्यों प्रतीत होता है?
मेरे पास एक ऐसा फ़ंक्शन है जो classType: KClass<Foo>
प्राप्त करता है और मैं नोर्ग कन्स्ट्रक्टर का उपयोग करके Foo
का उदाहरण बनाना चाहता हूं।
2 जवाब
मैंने कोटलिन प्लगइन संस्करण को अपडेट किया और ग्रेडल कैश द्वारा हटा दिया गया और अब यह काम कर रहा है।
जावा प्रतिबिंब (जैसे newInstance()
) का उपयोग करने के लिए आपको संबंधित एक्सेस करना होगा जावा वर्ग:
fun createInstance(classType: KClass<Foo>): Foo = classType.java.newInstance()
लेकिन कोटलिन createInstance() प्रदान करता है। उस उपयोग के मामले के लिए बेहतर विकल्प के रूप में:
क्लास का एक नया इंस्टेंस बनाता है, एक कंस्ट्रक्टर को कॉल करता है जिसमें या तो कोई पैरामीटर नहीं होता है या सभी पैरामीटर वैकल्पिक होते हैं।
fun createInstance(classType: KClass<Foo>): Foo = classType.createInstance()
createInstance()
का उपयोग क्यों नहीं कर सका, मैंने गलती से getInstance()
लिखा था
संबंधित सवाल
नए सवाल
kotlin
कोटलिन एक ओपन-सोर्स है, जो जेटब्रेन द्वारा समर्थित और विकसित की गई स्टेटिकली टाइप्ड प्रोग्रामिंग लैंग्वेज है। कोटलिन OOP और कार्यात्मक सुविधाओं को जोड़ती है और इंटरऑपरेबिलिटी, सुरक्षा, स्पष्टता और टूलींग समर्थन पर केंद्रित है। यह वर्तमान में जेवीएम, जावास्क्रिप्ट और देशी लक्ष्यों को लक्षित करता है, और यह एंड्रॉइड पर आधिकारिक रूप से समर्थित भाषा है।
createInstance()
ढूंढ रहे हैं?