निजी क्षेत्रों तक पहुँचने के लिए, आपको उन्हें कक्षा के घोषित क्षेत्रों से लाना होगा और फिर उन्हें सुलभ बनाना होगा:
Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException
f.setAccessible(true);
Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException
संपादित करें : जैसा कि aperkins द्वारा टिप्पणी की गई है , दोनों क्षेत्र को एक्सेस कर रहे हैं, इसे सुलभ के रूप में सेट कर रहे हैं और मान को पुनः प्राप्त कर सकते हैं Exceptions फेंक सकते हैं , हालांकि केवल चेक किए गए अपवाद जिन्हें आपको ध्यान में रखने की आवश्यकता है, ऊपर टिप्पणी की गई है।
NoSuchFieldExceptionयदि आप एक नाम है जो एक घोषित क्षेत्र के अनुरूप नहीं था द्वारा एक क्षेत्र के लिए कहा फेंक दिया होगा।
obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException
IllegalAccessException, फेंक दिया जाएगा अगर क्षेत्र पहुंच में नहीं था (उदाहरण के लिए अगर यह निजी है और नहीं ले पा के माध्यम से सुलभ बना दिया गया है f.setAccessible(true)लाइन।
RuntimeExceptionरों जो फेंक दिया जा सकता है या तो कर रहे हैं SecurityExceptionरों (यदि JVM के SecurityManagerआप एक क्षेत्र की पहुँच को बदलने के लिए अनुमति नहीं दी जाएगी), या IllegalArgumentExceptionरों, यदि आप क्षेत्र की क्लास के प्रकार की नहीं एक वस्तु पर क्षेत्र की कोशिश और उपयोग:
f.get("BOB"); //will throw IllegalArgumentException, as String is of the wrong type