2014-10-17 18 views
23

के साथ कोटलिन का उपयोग करना कक्षाओं में निर्भरताओं को इंजेक्ट करने के लिए डैगर का उपयोग करने का सबसे अच्छा तरीका क्या है, विशेष रूप से शून्य-तर्क कन्स्ट्रक्टर कक्षाएं जैसे गतिविधियों, डैगर के साथ? क्या डैगर 2 संभवतः स्थिति में सुधार लाएगा?डैगर

अग्रिम धन्यवाद।

उत्तर

32

के बाद से Kotlin M13 रिहाई, एक नया संपत्ति विशेष रूप से क्रम में समर्थन निर्भरता इंजेक्शन (करने के लिए की तरह डैगर 1 के साथ जोड़ दिया गया है & 2) और अन्य ढांचे।

इसे देर से संपत्ति कहा जाता है। प्रलेखन से लिया:

class Example { 
      @Inject 
      lateinit var bar: Bar 
} 

संक्षेप में, बार कोई initializers है, लेकिन एक गैर-शून्य प्रकार के रूप में घोषित किया जाता है। यदि आप प्रारंभ करने से पहले इसे पढ़ने का प्रयास करते हैं, तो एक अपवाद फेंक दिया जाता है।
अन्यथा, एक बार जब इसे डैगर का उपयोग शुरू किया जाता है, तो इसे सामान्य संपत्ति के रूप में उपयोग किया जा सकता है।

सब कुछ अच्छी तरह से language doc में समझाया गया है और आप वहां M13 रिलीज के लिए blog post relative भी देख सकते हैं।

+0

प्राचीन प्रकार जैसे इंट, लांग इन कोटलिन पर देर से कैसे करें –

1

डैगर एनोटेशन प्रोसेसिंग पर निर्भर करता है, जो अभी तक कोटलिन में समर्थित नहीं है, जहां तक ​​मुझे पता है। लेकिन वे कहते हैं, यह योजना बनाई है। और, जबकि आप या तो डैगर निर्भरताओं के साथ जावा कक्षाओं का विस्तार कर सकते हैं, या कुछ प्रतिबिंब आधारित इंजेक्शन ढांचे का प्रयास कर सकते हैं - गुइस, रोबोगुइस

+1

एनोटेशन प्रोसेसिंग समर्थित है। जेनरेट कोड –

+0

@EugenMartynov में समस्या '$' प्रतीक में है क्या आप इसे काम करने में कामयाब रहे? डैगर 1 और अन्य पुस्तकालय, एनोटेशन प्रोसेसिंग पर भरोसा करते हैं। – naixx

13

मैं थोड़ी देर के लिए अपना उत्तर अपडेट नहीं कर रहा था और यह पुराना हो गया। यहां @ Ben से नया उत्तर भी देखा गया है जो एम 13/एम 14 के लिए काम करता है।

यह निर्णय लिया गया कि अगर मैं आप सभी को अपने टेम्पलेट प्रोजेक्ट में दिलचस्पी लेता हूं तो मैं सबसे अच्छा होगा, जिसे मैं नवीनतम कोटलिन और डैगर 2 बनाम के साथ अद्यतित रखने की कोशिश करता हूं। Kotlin + Dagger 2 sample

मैं वहाँ का वर्णन कर रहा हूँ कैसे वस्तुओं सुई, कई एनोटेशन आदि सहित

+0

क्या आपके पास एक नमूना प्रोजेक्ट है जिसे मैं देख सकता हूं? –

+1

@cypressious मैंने एक टेम्पलेट प्रोजेक्ट बनाया है। https://github.com/damianpetla/kotlin-dagger-example –

संबंधित मुद्दे