获取功能:
1.获取成员变量们
2.获取构造方法们
3.获取成员方法们
4.获取类名
获取Field
代码:
public class ReflectDemo02 { public static void main(String[] args) throws Exception { //1.获取Person的Class对象 Class personClass = Person.class; /* Fileld[] getFields() 获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 */ //Fileld[] getFields()获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 Field[] fields = personClass.getFields(); for (Field field : fields) { System.out.println(field); } System.out.println("---------------------"); //Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 Field age = personClass.getField("age"); //获取成员变量age的值 Person p = new Person(); Object o = age.get(p); System.out.println(o); //设置成员变量age的值 age.set(p, 10); //获取成员变量age的值 o = age.get(p); System.out.println(o); System.out.println("--------------------------"); /* Fileld[] getDeclaredFilds() Filed getDeclaredField(String name) */ //Fileld[] getDeclaredFilds() Field[] fields1 = personClass.getDeclaredFields(); for (Field field : fields1) { System.out.println(field); } System.out.println("----------------------------"); //Filed getDeclaredField(String name) Field a = personClass.getDeclaredField("a"); //在获取不是public的成员变量时 需要忽略修饰符的安全检查 a.setAccessible(true);//这种我们称为 暴力反射 //获取成员变量age的值 Object o1 = a.get(p); System.out.println(o1); }
运行结果: