Java 反射的获取成员变量
文章记录学习过程
只供参考
1.获取成员变量们
Field[] getFields() 获取所有public修饰的成员变量
Field[] getDeclaredFields() 获取所有成员变量,不考虑修饰符
Field setAccessible(true);//忽略访问权限修饰符的安全检查(暴力反射)
import java.lang.reflect.Field;
public class ReflectDemo2 {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
Class personClass =Person.class;
Field[] fields= personClass.getFields();//获取所有public的修饰的成员变量
for(Field field:fields){
System.out.println(field);
}
System.out.println("------------");
Field a= personClass.getField("a");
Person p=new Person();
Object value=a.get(p);//获取对象Person 的属性a的值
System.out.println(value);
a.set(p,"张三");
System.out.println(p.toString());
System.out.println("====================");
Field[] declaredFields= personClass.getDeclaredFields();//获取所有的成员变量,不考虑修饰符
for (Field i:declaredFields){
System.out.println(i);
}
Field d = personClass.getDeclaredField("d");
d.setAccessible(true);//忽略访问权限修饰符的安全检查(暴力反射)
Object value2 = d.get(p);
System.out.println(value2);
}
}