मेरे पास एक कक्षा है जो Object
एस को दूसरी कक्षा में वापस करने के लिए एक्सएमएल और प्रतिबिंब का उपयोग करती है।किसी निजी विधि को आमंत्रित करने का कोई तरीका?
आम तौर पर ये वस्तु बाहरी वस्तु के उप-क्षेत्र होते हैं, लेकिन कभी-कभी यह कुछ ऐसा है जो मैं फ्लाई पर उत्पन्न करना चाहता हूं। मैंने ऐसा कुछ करने की कोशिश की है लेकिन इसका कोई फायदा नहीं हुआ है। मेरा मानना है कि ऐसा इसलिए है क्योंकि जावा आपको प्रतिबिंब के लिए private
विधियों तक पहुंचने की अनुमति नहीं देगा।
Element node = outerNode.item(0);
String methodName = node.getAttribute("method");
String objectName = node.getAttribute("object");
if ("SomeObject".equals(objectName))
object = someObject;
else
object = this;
method = object.getClass().getMethod(methodName, (Class[]) null);
प्रदान की विधि private
है, तो यह एक NoSuchMethodException
साथ विफल रहता है। मैं विधि public
विधि बनाकर इसे हल कर सकता हूं, या इसे प्राप्त करने के लिए एक और वर्ग बना सकता हूं।
लंबी कहानी छोटी, मैं बस सोच रहा था कि प्रतिबिंब के माध्यम से private
विधि तक पहुंचने का कोई तरीका था या नहीं।
जब मैंने अतीत में ऐसा किया है, तो मैंने विधि को कॉल करने के बाद method.setAccessible (false) भी कहा है, लेकिन मुझे यह नहीं पता कि यह आवश्यक है या नहीं। – shsteimer
नहीं, जब आप पहुंच सेट करते हैं, तो यह केवल उस उदाहरण पर लागू होता है। जब तक आप उस विशेष विधि वस्तु को अपने नियंत्रण से बचने न दें, यह सुरक्षित है। – erickson
मैं बिल्कुल प्यार करता हूँ आप दोस्त साथी। बहुत बढ़िया उत्तर + खराब कोड == इतना बुरा दिन नहीं। – droope