के माध्यम से निजी संपत्ति का उपयोग कर मेरे पास निम्नलिखित पैकेज संरचना और कक्षाएं हैं।जावा प्रतिबिंब
package X
Class A
private string fieldX;
protected string getFieldX(){ return fieldX};
package Y
Class B extends A
Class C extends B
मैं ClassC वस्तु है और प्रतिबिंब के माध्यम से fieldX प्राप्त करने की कोशिश।
Class partypes[] = new Class[0];
Object arglist[] = new Object[0];
Method getContextMethod = ClassC.class.getMethod("getFieldX",partypes);
String retValue = (string) getContextMethod.invoke(classCInstance, arglist);
लेकिन मुझे NoSuchMethod अपवाद मिल रहा है।
मैंने सीधे फील्डएक्स तक पहुंचने का प्रयास किया। लेकिन इस बार मुझे NoSuchField अपवाद मिल रहा है।
Field reqField = ClassC.class.getDeclaredField("fieldX");
reqField.setAccessible(true);
Object value = reqField.get(classCInstance);
String retValue = (string) value;
बात मैं गलत कर रहा हूँ क्या है? क्या क्लाससी ऑब्जेक्ट से इस फील्डएक्स को पाने का कोई तरीका है?
समाधान: (समाधान के लिए बहुत vz0 धन्यवाद);
निजी क्षेत्र के लिए सीधी पहुँच:
Field reqField = ClassA.class.getDeclaredField("fieldX");
reqField.setAccessible(true);
String value = (String)reqField.get(clazzc);
विधि कॉल;
Class partypes[] = new Class[0];
Object arglist[] = new Object[0];
Method getContextMethod = ClassA.class.getDeclaredMethod("getFieldX",partypes);
getContextMethod.setAccessible(true);
System.out.println((String)getContextMethod.invoke(clazzc, arglist));
यह काम नहीं करेगा क्योंकि विधि 'कक्षासी' में घोषित नहीं की गई है। – BalusC
टाइपो संपादित, thx। – vz0
स्पष्टीकरण जोड़ा गया। – vz0