通过反射完成不同对象之间的属性拷贝
来源:互联网 发布:阿里云cdn加速如何使用 编辑:程序博客网 时间:2024/05/16 01:09
通过反射完成不同对象之间的属性拷贝
import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import java.util.List;/** * 数据工具类 */public class DataUtil { /** * 实现属性拷贝 */ public static void copyProperties(Object src , Object dest){ try { //源对象的bean信息 BeanInfo bi_src = Introspector.getBeanInfo(src.getClass()); Class destClass = dest.getClass(); //取出源对象类的属性描述符 PropertyDescriptor[] ps = bi_src.getPropertyDescriptors(); //迭代所有属性 for(PropertyDescriptor pp : ps){ //找出get方法和set方法 Method getter = pp.getReadMethod(); Method setter = pp.getWriteMethod() ; //标准属性 if(getter != null && setter != null){ //提取getter返回值类型 Class retType = getter.getReturnType(); //获得目标对象对应的setter方法签名 Method destSetter = null ; try { destSetter = destClass.getMethod(setter.getName(), retType); } catch (Exception e) { continue; } //取出源对象的属性值 getter.setAccessible(true); Object srcValue = getter.invoke(src) ; //设置给目标对象 destSetter.setAccessible(true); destSetter.invoke(dest,srcValue) ; } } } catch (Exception e) { e.printStackTrace(); } } /** * 将属性复制给集合中的每个对象 */ public static void copyProperites(Object src , List list){ for(Object dest : list){ copyProperties(src,dest); } }}
阅读全文
0 0
- 通过反射完成不同对象之间的属性拷贝
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 对象之间通过反射拷贝数据
- 反射实现两个对象属性名不同之间的映射
- 通过ContentProvider完成不同应用程序之间的数据提取
- 两个具有相同属性的对象之间属性的拷贝
- java反射(5)通过反射拷贝对象
- 通过反射拷贝一个类的属性值
- flex对象之间属性拷贝
- 插入对话框,通过选择对话框的属性完成不同设置。
- 通过Java的反射机制实现对象的拷贝
- 完成内存之间的拷贝
- Java通过反射实现简单对象的拷贝
- java-反射(1)-通过反射改变对象的属性
- Java反射机制实现对象属性值的拷贝
- spring-两个对象之间的属性拷贝工具
- 反射应用:比较两个对象属性的不同
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- [LeetCode][2 Add Two Numbers][medium]Java实现
- HDFS文件系统和元数据合并流程以及namenode启动流程
- [4]54. Spiral Matrix/59. Spiral Matrix II(Java)
- 使用Lamdba 表达式 从A集合中去除不存在于B集合的元素加入到C集合中(快速找出两个集合中不同的元素)
- 通过反射完成不同对象之间的属性拷贝
- 在mybatis报错Open quote is expected for attribute "property" associated with an element type "result".
- mybatis入门基础(四)----输入映射和输出映射
- 程序源的情感生活
- postgres创建用户,修改用户密码,创建数据库
- mybatis入门基础(五)----动态SQL
- Lecture 7_2: Lists and mutability, dictionaries, pseudocode, introduction to efficiency
- 算法分析与设计课程——LeetCode刷题之Reverse Integer
- wr720n v4 折腾笔记(二):刷入不死Uboot