BeanUtils给反射对象赋值
JavaBean的三个条件:
1. 该类必须要公开.
2. 必须要提供一个公开的空参构造方法.
3. 私有属性必须要提供对应的 setters & getters
常用方法 :
1. setProperty(bean, name, value);
2. getProperty(bean, name);
3. populate(bean, Map<String, Object>); map 参数是 `服务器` 提供. request.getParameterMap();
// 方法一 : setProperty Class<?> cls = Class.forName("cn.panda.bean.Student"); Object obj = cls.newInstance(); // 使用 BeanUtils 工具类完成反射对象中数据的注入 BeanUtils.setProperty(obj, "name", "Jack"); BeanUtils.setProperty(obj, "age", 18); BeanUtils.setProperty(obj, "gender", '男'); BeanUtils.setProperty(obj, "score", 90.5f);
Object obj = new Student("张三", 30, '男', 60.5f); // 获取数据 String name = BeanUtils.getProperty(obj, "name"); String age = BeanUtils.getProperty(obj, "age"); String gender = BeanUtils.getProperty(obj, "gender"); String score = BeanUtils.getProperty(obj, "score");
Class<?> cls = Class.forName("cn.panda.bean.Student"); Object bean = cls.newInstance(); BeanUtils.populate(bean, this.getParameterMap()); // request.getParameterMap(); public Map<String, Object> getParameterMap() { 模拟前端数据 Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "渣渣"); map.put("age", 20); map.put("gender", '女'); map.put("score", 100f); return map; }
动态地为bean类注入数据,在程序运行中,反射获取bean类Class字节码文件cls,,通过cls对属性名key进行反射获取属性对象,对属性对象赋值值(bean的实例对象,value)