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)); } }
相关文章推荐
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java---通过属性名反射获取get和set方法
- Java通过反射机制动态设置对象属性值
- java反射-通过反射机制修改对象属性
- [java]反射机制给属性使用set方法构造对象
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- [java]反射机制给属性使用set方法构造对象
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- 通过反射将一个对象的值赋给另一个对象中对应的属性 不需要用set、get
- java通过反射机制获取对象属性和值
- Java通过反射机制动态设置对象属性值的方法
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Object get["属性"]; java反射技术通过对象和属性名得到属性值
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java基础39-通过反射机制获取类的方法、属性和构造方法