2009-02-18 9 views
37

मेरे पास ऐसा वर्ग है जो इस तरह दिखता है:मैं ऑब्जेक्ट को तुरंत कैसे चालू करूं जो स्प्रिंग ढांचे के साथ जेनिक्स का उपयोग करता है?

class Dao<T>{ 
... 
} 

मैं यह करना चाहता हूं:

new Dao<Student>(); 

स्प्रिंग एक्सएमएल कॉन्फ़िगरेशन से।

क्या किया जा सकता है? कैसे?

उत्तर

55

अप पढ़ना type erasure के बारे में तो आप इस एक सा बेहतर ढंग से समझने में मदद मिलेगी।

रनटाइम पर, जेनेरिक क्लास के लिए टाइप पैरामीटर मिटा दिए गए हैं। मतलब, चूंकि क्लेटस ने कहा, जावा में जेनेरिक मूल रूप से वाक्य रचनात्मक चीनी हैं - वे केवल एक संकलन-समय सुविधा हैं।

के बाद से वसंत रन-टाइम में इन्स्तांत वस्तुओं है, यह वास्तव में किसी भी प्रकार की एक Dao का दृष्टांत के लिए स्वतंत्र है - और वास्तव में, वहाँ एक Dao बनाने और कुछ तरीकों में Student प्रकारों में से गुजर रहा है और में Teacher प्रकार जाने से रोके कुछ भी नहीं है एक और।

तो मूल रूप से जवाब है, स्प्रिंग पता नहीं है कि Dao प्रकार पैरामिट्रीकृत करने के लिए है और इसके साथ कुछ नहीं कर सकते है।

8

आप ऐसा नहीं कर सकते हैं और कारण यह नहीं है कि आप वास्तव में कुछ भी नहीं कर सकते हैं। इसका मतलब है कि जावा जेनरिक सिंटैक्टिक चीनी हैं, इसलिए आप किस प्रकार के बीन बनाते हैं, वह अप्रासंगिक है। आप दाओ (या दाओ) को कुछ भी ठीक करने में इंजेक्ट कर सकते हैं, जिस बिंदु पर यह इंजेक्शन किए गए किसी भी प्रकार के अंतर्निहित कास्टिंग का उपयोग करेगा।

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

  • कोई संबंधित समस्या नहीं^_^