ในการเข้าใช้งานเขตข้อมูลส่วนบุคคลคุณจำเป็นต้องนำออกจากเขตข้อมูลที่ประกาศของชั้นเรียนจากนั้นทำให้เข้าถึงได้:
Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException
f.setAccessible(true);
Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException
แก้ไข : ตามที่ได้รับความเห็นโดยaperkinsทั้งการเข้าถึงฟิลด์การตั้งค่าเป็นเข้าถึงและดึงค่าสามารถโยนException
s แม้ว่าข้อยกเว้นการตรวจสอบเท่านั้นที่คุณจำเป็นต้องคำนึงถึงมีการแสดงความคิดเห็นข้างต้น
NoSuchFieldException
จะถูกโยนถ้าคุณถามหาข้อมูลโดยใช้ชื่อที่ไม่สอดคล้องกับข้อมูลการประกาศให้เป็น
obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException
IllegalAccessException
จะถูกโยนถ้าสนามไม่สามารถเข้าถึง (ตัวอย่างเช่นถ้ามันเป็นส่วนตัวและยังไม่ได้รับการทำเข้าถึงได้ผ่านทางหายไปออกf.setAccessible(true)
เส้น
RuntimeException
s ซึ่งอาจจะมีทั้งโยนSecurityException
s (ถ้า JVM ของSecurityManager
จะไม่ยอมให้มีการเปลี่ยนแปลงการเข้าถึงข้อมูลของ) หรือIllegalArgumentException
s ถ้าคุณพยายามและการเข้าถึงข้อมูลบนวัตถุไม่ประเภทระดับเขตของงาน:
f.get("BOB"); //will throw IllegalArgumentException, as String is of the wrong type