2011-06-22 7 views
17

मेरे पास एक सामान्य डेटाबेस एक्सेस क्लास है, जिसे मैं टाइप लिटरल निर्माण का उपयोग कर बाध्यकारी हूं। अब एक परीक्षण में मैं उस वर्ग का नकल करना चाहता हूं और मेरे पास एक प्रदाता बनाने के लिए है, जो एक नकली उदाहरण बनाता है। मेरे परीक्षण में, मैं अपने व्यवहार को परिभाषित करने के लिए उस नकली तक पहुंच बनाना चाहता हूं। अब सवाल यह है कि, मैं इंजेक्टर से वस्तु को कैसे पुनर्प्राप्त कर सकता हूं?गिइस: मैं टाइप लिटरल-लिपटे जेनेरिक का उदाहरण कैसे प्राप्त करूं?

मेरी बाध्यकारी परिभाषा है कि:

binder.bind(new TypeLiteral<GenericDbClass<Integer>>(){}).GenericDbClassProvider.class); 

आम तौर पर मैं इस तरह एक उदाहरण मिलेगा:

injector.getInstance(GenericDbClass.class); 

लेकिन चूंकि मैं इंटरफ़ेस ही GenericDbClass के कार्यान्वयन के लिए बाध्य नहीं कर रहा हूँ, मैं डॉन यह नहीं पता कि यह कैसे करें। क्या मुझे जटिल लगता है?

किसी भी विचार/सहायता की बहुत सराहना की जाती है!

+0

एक अल्पकालिक समाधान के रूप में मैंने जेनेरिक इंटरफ़ेस को एक ठोस परिभाषा के साथ बढ़ाया, इसलिए अब मुझे एक उदाहरण मिल सकता है। फिर भी, क्या कार्य को अधिक सामान्य तरीके से पूरा करने का कोई तरीका है? –

उत्तर

37

गुइस की Key सुविधा का उपयोग करें, जो इस तरह की समस्या के लिए बनाया गया है। आपके मामले में

injector.getInstance(Key.get(new TypeLiteral<GenericDbClass<Integer>>(){}); 

चाल करेगा।

+14

'injector.getInstance (नई कुंजी <जेनेरिक डीबी क्लास >() {}) यदि आपको कोई बाध्यकारी एनोटेशन प्रदान करने की आवश्यकता नहीं है तो भी काम करेगा। – ColinD

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