2012-11-16 11 views
47

मैं एक कक्षा में निम्नलिखित दो तरीकों:जावा कैसे तर्कों के रूप आदिम प्रकार के साथ प्रतिबिंब द्वारा विधि कॉल करने के

public void Test(int i){ 
    System.out.println("1"); 
} 
public void Test(Integer i){ 
    System.out.println("2"); 
} 

कोड की निम्न पंक्ति

this.getClass().getMethod("Test",Integer.class).invoke(this, 10); 

प्रिंट 2, कैसे बनाने के लिए यह 1 प्रिंट करें?

उत्तर

83

प्रतिबिंब का उपयोग कर पैरामीटर के रूप में आदिम प्रकार के साथ एक विधि कॉल करने के लिए:

आप int.class

this.getClass().getMethod("Test",int.class).invoke(this, 10); 

या Integer.TYPE

this.getClass().getMethod("Test",Integer.TYPE).invoke(this, 10); 
इस्तेमाल कर सकते हैं

अन्य आदिम प्रकारों के लिए लागू होता है

9

अजीब लेकिन सच:

this.getClass().getMethod("Test",int.class).invoke(this, 10); 
संबंधित मुद्दे