对apache.commons.beanutils.BeanUtils的源码解读
来源:互联网 发布:fluent软件百度云 编辑:程序博客网 时间:2024/06/15 14:24
主要是对BeanUtils.copyProperties(param1,param2)方法的解读。
首先第一个参数是要赋值的对象,第二个参数是源Bean。
else /* if (orig is a standard JavaBean) */ { PropertyDescriptor origDescriptors[] = getPropertyUtils().getPropertyDescriptors(orig);上面这段代码是判断传入参数是javabean,然后获取此bean中的属性。
参考代码:
public PropertyDescriptor[] getPropertyDescriptors(Class beanClass) { if (beanClass == null) { throw new IllegalArgumentException("No bean class specified"); } // Look up any cached descriptors for this bean class PropertyDescriptor descriptors[] = null; descriptors = (PropertyDescriptor[]) descriptorsCache.get(beanClass); if (descriptors != null) { return (descriptors); } // Introspect the bean and cache the generated descriptors BeanInfo beanInfo = null; try { beanInfo = Introspector.getBeanInfo(beanClass); } catch (IntrospectionException e) { return (new PropertyDescriptor[0]); } descriptors = beanInfo.getPropertyDescriptors(); if (descriptors == null) { descriptors = new PropertyDescriptor[0]; } descriptorsCache.put(beanClass, descriptors); return (descriptors); }运用api中的内省机制获取bean的显示信息。
Introspector.getBeanInfo(beanClass);然后在获取bean中所有属性并把集合存放到FashHashMap中作为缓存最后返回结果集。
循环返回的结果集,获取name。
然后判断param2中name是否存在get方法和param1中name是否存在set方法
for (int i = 0; i < origDescriptors.length; i++) { String name = origDescriptors[i].getName(); if ("class".equals(name)) { continue; // No point in trying to set an object's class } if (getPropertyUtils().isReadable(orig, name) && getPropertyUtils().isWriteable(dest, name)) { try { Object value = getPropertyUtils().getSimpleProperty(orig, name); copyProperty(dest, name, value); } catch (NoSuchMethodException e) { ; // Should not happen } } }
然后获得param2中的name字段值,set到param1中的name
0 0
- 对apache.commons.beanutils.BeanUtils的源码解读
- apache.commons.beanutils.BeanUtils
- apache.commons.beanutils.BeanUtils的使用
- apache Commons-beanutils的使用
- 初用apache.commons.beanutils.BeanUtils
- 初用apache.commons.beanutils.BeanUtils
- org.apache.commons.beanutils.BeanUtils
- 初用apache.commons.beanutils.BeanUtils
- org.apache.commons.beanutils.BeanUtils;
- BeanUtils--org.apache.commons.beanutils.BeanUtils
- apache的commons-beanutils.jar中的BeanUtils的坑
- Apache Jakarta Commons Beanutils
- Apache Commons beanutils使用
- Apache Commons Long ,BeanUtils
- 初用apache.commons.beanutils.BeanUtils 选择自 samepoint 的 Blog
- org.apache.commons.beanutils.BeanUtils包的具体用法
- com.sun.org.apache.commons.beanutils.BeanUtils的用法简介
- 对于 org.apache.commons.beanutils.BeanUtils 的一些学习
- erlang启动参数
- iOS评论页面 iOS7代码更新
- 女儿写作文不知桃花长相 妈妈包一座山让其体验
- MFC调试技巧
- OpenCV之随机类RNG
- 对apache.commons.beanutils.BeanUtils的源码解读
- 通讯系统经验谈【一】TCP连接状态分析:SYNC_RECV,CLOSE_WAIT,TIME_WAIT
- 《剑指offer》读书笔记(第1章)
- linux杂谈(二):简单分区与文件系统
- Java SE之旅_10_回调函数
- PHP5.3, PHP5.4, PHP5.5新特性
- poj1061_扩展欧几里得_求线性同余方程
- 奥巴马称日美安保条约适用范围包括钓鱼岛
- 通讯系统经验谈【二】解读内核参数 - socket/文件句柄资源限制参数