प्रतिबिंब का उपयोग करते समय मुझे देखने के लिए संभावित मुद्दों क्या हैं। मैं प्रतिबिंब में बहुत उलझन में हूं, क्यों जावा निजी डेटा सदस्य तक पहुंचने के लिए इस प्रकार की कार्यक्षमता प्रदान करता है।निजी निजी है, तो क्यों जावा प्रतिबिंब का उपयोग कर निजी विधि तक पहुंचने की सुविधा देता है?
निजी: की तरह मुझे लगता है कि चाहते हैं, केवल वर्ग है जिसमें यह घोषित किया जाता है देख सकते हैं।
फिर ऐसा क्यों है अन्य वर्ग में निजी चीजों का उपयोग करने के लिए संभव है? इस शब्दावली (प्रतिबिंब) जावा में निजी (एक्सेस विशिष्ट) गुणों की पूरी अवधारणा को पूरी तरह से बहती है।
मैं इस विषय के बारे में कई लिंक आए थे, लेकिन इस विषय के बारे में पूर्ण विवरण नहीं दिया। उदाहरण:
package example;
import java.lang.reflect.Method;
class A{
private void privateMethod(){
System.out.println("hello privateMethod()");
}
}
class B{
public static void main(String[] args) throws Exception {
A d = new A();
Method m = A.class.getDeclaredMethod("privateMethod");
m.setAccessible(true);
m.invoke(d);
}
}
तो कृपया गहराई से इस दृष्टिकोण के बारे में परिदृश्य बताएं? मुझे अन्य वर्गों में निजी तरीकों की पहुंच के लाभ और नुकसान की आवश्यकता है?
http://stackoverflow.com/questions/1239581/why-is-it-allowed-to-access-java-private-fields-via-reflection –
अधिकांश नियमित परियोजनाओं को किसी भी प्रतिबिंब की आवश्यकता नहीं है, क्योंकि यदि आप क्या आपको बस अपने आर्किटेक्चर के बारे में फिर से सोचने की ज़रूरत है (पाठ्यक्रम के अपवाद हैं)। एक जगह जहां मैं नियमित रूप से प्रतिबिंब का उपयोग करता हूं हालांकि यूनिटटेस्ट में है। आप यूनिटटेस्ट में प्रतिबिंब का उपयोग करके एक निजी क्षेत्र को बदलकर बस कई परिदृश्यों को आजमा सकते हैं। उदाहरण के लिए एक बूलियन। मान लीजिए कि आपके पास बुलियन सेटिंग है और आप यूनिटटेस्ट में दोनों परिदृश्यों का परीक्षण करना चाहते हैं। आपकी प्रोजेक्ट में डिफ़ॉल्ट गलत है, इसलिए आप पहले इसका परीक्षण करते हैं। और फिर आप इसे सही (अस्थायी) डालने के लिए प्रतिबिंब का उपयोग करते हैं और अन्य परिदृश्य का परीक्षण करते हैं। –
कोई भी उदाहरण के साथ समझा सकता है? क्योंकि यह मेरी अवधारणा के बारे में बहुत स्पष्ट होगा। –