2012-08-23 11 views
5

अगर मैं एक निर्माता है कि एक parametized सामान्य प्रकार लेता है के साथ एक वर्ग के साथ (प्रकार):जावा getConstructor parametised प्रकार

public class Foo { 
    public Foo(Map<String, Object> data) { 
     ... 
    } 
} 

... मैं कैसे संदर्भ कि parametized मानचित्र की क्लास अगर मैं कॉल करना चाहते हैं:

Constructor constructor = cls.getConstructor(/*the Map class! */) 

(कहाँ cls है फू वर्ग।)

मैं की तरह कुछ करना चाहता हूँ:

Constructor constructor = cls.getConstructor(Map<String,Object>.class); 

... लेकिन यह काम नहीं करता है।

मुझे यकीन है कि इसका एक सरल जवाब है!

+1

चेक आउट (http://code.stephenmorley.org/articles/java-generics-type-erasure/)। यह भी देखें [जेनेरिक प्रकारों को प्रतिबिंबित करना] (http://thekevindolan.com/2010/03/reflecting-generic-types/)। – paulsm4

+0

आह हां टाइप मिरर, क्या मैंने इसके बारे में और सोचा था और वास्तव में पढ़ा था कि एक्लिप्स मुझे क्या बताने की कोशिश कर रहा था, शायद मुझे लगता है कि बाहर! वैसे भी, लिंक के लिए धन्यवाद। – Mikesname

उत्तर

11

रनटाइम पर, इस:

Map<String,Object> 

कोई पैरामीटर के बिना सिर्फ एक नक्शा वास्तव में है,।

कॉलिंग

cls.getConstructor(Map.class) will be enough 
4

तुम बस मानचित्र प्रकार से निर्माता संदर्भित कर सकते हैं। सामान्य मापदंडों क्रम के लिए मिट जाता है: जावा पर इस लिंक [ "प्रकार विलोपन"]

Constructor constructor = Foo.class.getConstructor(Map.class); 
संबंधित मुद्दे