您的位置:首页 > 编程语言 > Java开发

JAVA中通过反射机制访问对象的属性get,set

2020-07-16 05:44 78 查看

JAVA中通过反射机制访问对象的属性

  • 给属性赋值set
  • 获取属性的值get
  • 访问私有属性需要使用setAccessible(true)打破封装,但打破封装可能会造成数据被篡改
public class FieldTest03 {
public static void main(String[] args) throws Exception{
//不使用反射机制创建对象
User user = new User();
//不使用反射机制修改属性
user.age = 100;
//不使用反射机制获取对象属性值
System.out.println(user.age);

//使用反射机制创建对象:
Class c = Class.forName("reflection.field.User");
Object o = c.newInstance(); //底层调用无参数构造方法
Field field = c.getDeclaredField("age");
//field ——> age变量
//o ——> User对象
//对o对象的age变量修改属性值
field.set(o,20);
//获取o对象的age的属性值
System.out.println(field.get(o));

//访问私有的属性:
Field privateField = c.getDeclaredField("ID");
//打破封装(反射机制的缺点:打破封装可能会造成数据被篡改)
privateField.setAccessible(true);
//不打破封装会报异常java.lang.IllegalAccessException
System.out.println(privateField.get(o));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐