【郑州校区】自定义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号楼三层
|