public class Main{
public static void main(String[] args){
Person p=new Person(1024,"myname");
Class c1=p.getClass();
try{
Field field=c1.getDeclaredField("name");
field.getAccessible(true);
Object object=field.get(p);
System.out.println(object.toString());
}catch(NoSuchFieldException e){
e.printStackTrace();
}catch(SecurityException e){
e.printStackTrace();
}catch(IllegalArgumentException e){
e.printStackTrace();
}catch(IllegalAccessException e){
e.printStackTrace();
}
}
}
class Person{
private int id;
private String name;
public Person(){}
public Person(int id,String name){
this.id=id;
this.name=name;
}
}
首先通过Person的对象p获取到Person的Class对象,然后通过Person的Class对象获取name域,要把field对象的可访问权限设置为true,即field.setAccessible();
最后放入引用p,即会返回一个p的域中name的值,object指向的是"myname"这个字符串。