反射机制读写对象的属性Field
程序员文章站
2022-07-10 19:06:14
怎么通过反射机制访问一个java对象的属性?给属性赋值set获取属性的值get测试代码:package reflect;import java.lang.reflect.Field;public class Test09 { public static void main(String[] args) throws Exception { // 反射获得一个类的字节码 Class stuClass = Class.forName("reflect.S...
怎么通过反射机制访问一个java对象的属性?
给属性赋值set
获取属性的值get
测试代码:
package reflect;
import java.lang.reflect.Field;
public class Test09 {
public static void main(String[] args) throws Exception {
// 反射获得一个类的字节码
Class stuClass = Class.forName("reflect.Student");
// 反射实例化对象
Object obj = stuClass.newInstance();
// 通过属性的变量名,获取到类中的属性Filed对象
Field ageField = stuClass.getDeclaredField("age");
// 给obj对象的age属性赋值20
ageField.set(obj, 20);
// 获取属性值
Object getAge = ageField.get(obj);
System.out.println(getAge); // 20
/*
私有的属性不能直接赋值,可以打破封装
打破封装是反射机制的缺点,可能会给不法分子留下机会
*/
// 获取私有的no属性
Field noField = stuClass.getDeclaredField("no");
// 打破封装
noField.setAccessible(true);
// 给私有的属性赋值
noField.set(obj, 1001);
System.out.println(noField.get(obj)); // 1001
}
}
本文地址:https://blog.csdn.net/pipizhen_/article/details/107596374