Özel alanlara erişmek için, bunları sınıfın bildirilen alanlarından almanız ve ardından erişilebilir hale getirmeniz gerekir :
Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException
f.setAccessible(true);
Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException
EDIT : aperkins tarafından yorumlandığı gibi , hem alana erişim, hem de erişilebilir olarak ayarlanması ve değerin alınması Exception
s atabilir , ancak dikkat etmeniz gereken tek kontrol edilen istisnalar yukarıda yorumlanmıştır.
Belirtilen NoSuchFieldException
bir alana karşılık gelmeyen bir adla bir alan istediyseniz, bu alan atılır.
obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException
IllegalAccessException
Alanının erişilebilir değildi eğer özel ve eksik üzerinden erişilebilir hale getirilmediği takdirde, örneğin (atılmış olacağını f.setAccessible(true)
hattı.
RuntimeException
Atılabilmektedir lar ya vardır SecurityException
(JVM en takdirde ler SecurityManager
bir alanın erişilebilirliğini değiştirmesine izin vermez) veya IllegalArgumentException
değil alanın sınıfının türünde bir nesne üzerinde erişim alanını denemek ve eğer s:
f.get("BOB"); //will throw IllegalArgumentException, as String is of the wrong type