Pour accéder aux champs privés, vous avez besoin pour obtenir à partir de la classe est déclarée champs, puis de les rendre accessibles:
Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException
f.setAccessible(true);
Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException
EDIT: comme l'a été commenté par aperkins, tant l'accès au champ, réglage de l'accessibilité et de la récupération de la valeur de tous les jeter Exception
s, bien que le seul checked exceptions vous besoin d'être conscient de sont commentés ci-dessus.
L' NoSuchFieldException
pourrait être levée si vous avez demandé un champ par un nom qui ne correspond pas à une déclaration de terrain.
obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException
L' IllegalAccessException
pourrait être levée si le champ n'était pas accessible (par exemple, s'il est privé et n'a pas été rendu accessible par manquer l' f.setAccessible(true)
ligne de.
L' RuntimeException
s qui pourraient être projetés sont soit SecurityException
s (si la JVM SecurityManager
ne vous permettra pas de modifier un champ d'accessibilité), ou IllegalArgumentException
s, si vous essayez d'accéder au champ sur un objet n'est pas de la classe du type:
f.get("BOB"); //will throw IllegalArgumentException, as String is of the wrong type