मैंकक्षा.getMethod() प्रतिबिंब और autoboxing के लिए कोई समाधान?
Class.getMethod(String name, Class... parameterTypes)
उपयोग करने के लिए विधि मैं दिए गए मापदंडों के साथ लागू करने की जरूरत है पता लगाना चाहते हैं, लेकिन जाहिरा तौर Bug 6176992 में वर्णित के रूप जावा वहाँ autoboxing शामिल नहीं है। तो अगर मेरे परिलक्षित वर्ग एक (स्ट्रिंग, पूर्णांक) हस्ताक्षर के साथ एक विधि है आप अभी भी एक paremeter के रूप में एक {String.class, Integer.class} सरणी के साथ एक NoSuchMethodException मिलता है।
वहाँ इस के लिए किसी भी sollution है? एकमात्र तरीका मैं getMethod() को आदिम और गैर आदिम प्रकारों के हर क्रमपरिवर्तन के साथ कॉल करने के बारे में सोच सकता हूं जिसे मैं वास्तव में नहीं करना चाहता हूं।
संपादित करें: यह और अधिक स्पष्ट करने के लिए: मैं आदिम प्रकार कक्षाओं से अच्छी तरह परिचित हूँ, लेकिन मैं नहीं दिख रहा है कि वे किस तरह मेरी समस्या को हल करने में मदद कर सकता। मेरा पैरामीटर टाइप एरे कहीं से आता है और मुझे पता है कि यह केवल गैर आदिम प्रकारों को वापस कर देगा। मैं कल्पना नहीं कर सकते कि इंटरफेस सिर्फ आदिम प्रकार के साथ घोषित किया जाएगा और कहा कि वास्तव में मेरी समस्या है:
public interface TestInterface()
{
public void doTest(Integer i1, int i2, double d3, Double d);
}
Class<?>[] classes = { Integer.class, Integer.class, Double.class, Double.class }
// Due to autoboxing I should become the doTest method here, but it doesn't work
TestInterface.class.getMethod("doTest", classes);
क्या आप जानते हैं कि विधि का हस्ताक्षर समय से पहले क्या है? – PSpeed
नहीं, वास्तव में नहीं। ठीक है, एक और समाधान उस नाम के साथ सभी विधियों को प्राप्त करना होगा और देखें कि हस्ताक्षर (अन) बॉक्स किए गए प्रकार से मेल खाता है या नहीं। – Daff