黑马程序员技术交流社区

标题: 【郑州校区】自定义BeanUtils的populate方法实现 [打印本页]

作者: 我是楠楠    时间: 2019-3-21 14:56
标题: 【郑州校区】自定义BeanUtils的populate方法实现
【郑州校区】自定义BeanUtils的populate方法实现

1.1.1 功能分析
public static void populate(Object bean,Map map)
                                // 修改任意对象中的属性, 为传入Map集合中的键和值
                思路:
1. 获取传入对象的字节码对象
2. 获取map集合中所有的键和值
3. 调用Class中的getDeclaredField()方法将每一个键传入, 得到Field对象
4. 通过Field对象中的set方法赋值
5. Try catch捕获getDeclaredField方法可能发生的异常.(为了方式传入错误的值)
1.1.2 实例代码
[AppleScript] 纯文本查看 复制代码
//public static void populate(Object bean,Map map)

public static void populate(Object bean,Map map) throws ReflectiveOperationException {

//通过JavaBean对象来获取对应的字节码对象

Class clazz = bean.getClass();

//获取Map中所有的key

Set keys = map.keySet();

for (Object key : keys) {


try {

//根据key来获取对应的Field对象

Field f = clazz.getDeclaredField(key.toString());

//根据key来获取Map中对应的value

Object value = map.get(key);


f.setAccessible(true);

f.set(bean, value);

} catch(NoSuchFieldException e) {

//e.printStackTrace();

}

}

}

传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2