विचार बेस क्लास को परिभाषित करना है जो व्युत्पन्न कक्षाओं में परिभाषित विधियों का आह्वान कर सकता है, लेकिन सृजन के समय मैं यह सुनिश्चित करना चाहता हूं कि इस तरह के तरीकों को आवश्यकताओं के अनुसार बिल्कुल परिभाषित किया गया है, यह है कि विधियां केवल एक तर्क लेती हैं, एक हैश मैप <String String
>।जावा: सामान्य वर्ग प्रकार परिभाषाओं को कैसे जांचें?
अब तक मैं यह जांचने के लिए निम्न कोड में सक्षम था कि विधि में केवल एक पैरामीटर है और यह क्लास हैश मैप का है, लेकिन मैं कैसे जांच सकता हूं कि जेनेरिक परिभाषा <String, String
> है?
public boolean isMethodParameterValid(final Method method) {
final Class<?>[] parameters = method.getParameterTypes();
return ((parameters.length == 1) && parameters[0].isAssignableFrom(HashMap.class));
}
सभी प्रकार मिटाए नहीं गए हैं। एक और उदाहरण 'नया ऐरेलिस्ट {} 'होगा। नील Gafter के सुपर टाइप टोकन पोस्ट भी पढ़ने के लायक है: http://gafter.blogspot.com/2006/12/super-type-tokens.html –
johnstok
नहीं, गल्स के सुपर टाइप टोकन को संकलित समय पर मिटा दिया गया है। उनकी चाल जेनेरिक को चालू करने के लिए प्रयुक्त प्रकार तक पहुंचने में मदद करती है, रनटाइम पर (क्योंकि Type.getClass() अधिकृत है)। – JVerstry