मैं एक विधि लिखने की कोशिश कर रहा हूं जो प्रतिबिंब का उपयोग कर कक्षा में एक निजी क्षेत्र प्राप्त करेगी।प्रतिबिंब के माध्यम से जावा में निजी चरों तक पहुंच
यहाँ मेरी कक्षा (इस उदाहरण के लिए सरलीकृत) है:
public class SomeClass {
private int myField;
public SomeClass() {
myField = 42;
}
public static Object getInstanceField(Object instance, String fieldName) throws Throwable {
Field field = instance.getClass().getDeclaredField(fieldName);
return field.get(instance);
}
}
तो कहते हैं कि मैं यह कर:
SomeClass c = new SomeClass();
Object val = SomeClass.getInstanceField(c, "myField");
मैं हो रही है एक IllegalAccessException
क्योंकि myField
निजी है। प्रतिबिंब का उपयोग कर निजी चर प्राप्त करने/सेट करने का कोई तरीका है? (मैंने इसे सी # में किया है, लेकिन यह पहली बार है जब मैंने जावा में इसे आजमाया है)। यदि आप सोच रहे हैं कि ऐसी पागलपन की आवश्यकता क्यों है :), ऐसा इसलिए होता है क्योंकि कभी-कभी यूनिट परीक्षण के दौरान विफलता परीक्षण आदि के लिए फर्जी मानों पर निजी चर सेट करने के लिए आसान होता है।
भालू है कि इस अगर वहाँ PermissionManager – Bozho
है यह मामूली प्रदर्शन में सुधार कर सकते हैं, भले ही सदस्य अन्यथा पहुँचा जा सकता है (के रूप में यह जाँच करता है बंद हो जाती है) –
+1 यह सिर्फ मुझे कुछ बचाया काम नहीं करेगा निराशा :) –