हालांकि सही उत्तरों दिए गए हैं, एक और विकल्प है जिसे अभी तक इंगित नहीं किया गया है। असल में फ़ील्ड और विधियां एकमात्र ऐसी जगह नहीं हैं जहां सामान्य प्रकार की जानकारी रह सकती है: सुपर-क्लास घोषणा में यह जानकारी भी है।
इसका मतलब यह है कि यदि आपके मानचित्र वास्तव में एक उप-प्रकार की तरह है:
class MyStringMap extends HashMap<String,String> { }
तो यह instance.getClass पर 'getGenericSuperclass' (फोन करके सामान्य प्रकार पैरामीटर है कि इस्तेमाल किया गया, यह पता लगाने के लिए संभव है() '), और उसके बाद आवंटित वास्तविक प्रकार पैरामीटर तक पहुंच। यह काफी शामिल हो जाता है क्योंकि पैरामीटर को पदानुक्रम को पार करना होता है ताकि यह सुनिश्चित किया जा सके कि मापदंडों को मानचित्र से ठीक से बाध्य किया जा सके (एलियाज्ड आदि हो सकता है), लेकिन यह किया जा सकता है।और इस तरह से "सुपर टोकन" है की तरह सामान्य घोषणा पारित करने के लिए प्रयोग किया जाता है:
new TypeToken<Map<String, Double>>() { }
जो कई जावा चौखटे (जर्सी, Guice, जैक्सन और कई और अधिक)
समस्या यहाँ से प्रयोग किया जाता है, हालांकि वह यह है कि यह एक उदाहरण के नाममात्र प्रकारों को निर्धारित करने की अनुमति देता है, यह केवल सामान्य काम के वास्तविक गैर-जेनेरिक उप-वर्ग होने पर ही काम करता है, और मुझे इस आवश्यकता को लागू करने के तरीके के बारे में पता नहीं है (कॉलिंग कोड को यह अजीब लगता है कि यह आवश्यक है इस उद्देश्य के लिए बस कुछ हद तक फर्जी मानचित्र उप-वर्ग बनाएं)।
इसे देखें: http://stackoverflow.com/questions/1942644/get-generic-type-of-java-util-list –
आप [प्रतिबिंब] (http://download.oracle.com/javase का उपयोग कर सकते हैं /tutorial/reflect/index.html) – Aillyn
कार्यात्मक आवश्यकता क्या है? प्रतिबिंब के साथ झुकाव से बेहतर समाधान हो सकते हैं। – BalusC