EntityCopyUtil:对象属性复制的全方位处理
实体复制工具类(EntityCopyUtil)是Java编程中的一个重要辅助工具,主要用于处理对象属性值的复制操作。这个类提供了三种主要功能:全复制、部分复制以及部分不复制。它的核心目的是简化对象数据的克隆过程,避免在代码中重复编写繁琐的属性赋值逻辑。 1. **全复制(Full Copy)** 全复制方法是将源对象的所有属性值都完全复制到目标对象上。实现时,通过`soure.getClass().getDeclaredFields()`获取源对象的所有字段,然后遍历这些字段,使用`Field`类的`setAccessible(true)`方法解除访问权限限制,以确保可以访问到私有成员变量。接着,对于每个源对象的字段,调用`set`方法将属性值复制到目标对象对应的位置。 2. **部分复制(Partial Copy)** 部分复制允许开发者指定要复制的特定属性列表。`paramList`方法接收一个包含要排除的属性字段名的字符串数组,根据这个列表只复制不在排除列表中的属性。如果传入的`excludeFields`不为空且长度大于0,那么会创建一个新的`ArrayList`来存储这些需要忽略的属性,并在复制过程中跳过它们。 3. **部分不复制(Selective Non-Copy)** 这个功能可能是为了提供更细粒度的控制,用户可以选择性地复制某些属性而不复制其他属性。这部分没有直接的代码实现,但可以根据需要结合前两个方法进行自定义,例如先使用`paramList`获取排除列表,然后在`copyPropertys`方法中过滤掉这些属性。 这个类的`@author:qinzhong`和`@createTime:2016-8-16`表明这是由Qin Zhong在2016年8月16日编写的,可能是在处理复杂的企业级应用或需要频繁对象克隆场景中设计的。在实际开发中,这样的工具类能够提高代码的可读性和复用性,减少重复劳动,尤其是在处理Java对象的状态复制时显得尤为实用。 EntityCopyUtil类是Java编程中处理对象属性复制的一种优雅解决方案,它灵活支持不同的复制策略,适用于多种场景,如对象序列化、浅拷贝与深拷贝等。使用时,开发者只需要关注业务逻辑,而无需过多关注底层的属性复制细节。
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
/**
* <p>对象属性值的复制工具类</p>
* <ul>
* <li>全复制</li>
* <li>部分复制</li>
* <li>部分不复制</li>
* </ul>
* @author: qinzhong
* @createTime: 2016-8-16
*/
public class EntityCopyUtil {
/**
* <p>参数列表转换</p>
* <p>将多个字符串转成List集合</p>
*
* @param excludeFields 字符串参数
* @return List<String> 字符串集合
*/
public static List<String> paramList(String... excludeFields) {
if (excludeFields != null && excludeFields.length > 0) {
exParams = new ArrayList<String>();
for (String excludeField : excludeFields) {
exParams.add(excludeField);
}
}
return exParams;
}
/**
* 相同属性值拷贝,忽略不存在以及类型不一致的属性
*
* @param soure 源对象
* @param target 目标对象
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void copyPropertys(Object soure,Object target) {
if (soure == null || target == null) return;
//访问源对象所有字段,并返回一个Field[]数组
Field[] sfields = soure.getClass().getDeclaredFields();
//访问目标对象所有字段,并返回一个Field[]数组
Field[] tfields = target.getClass().getDeclaredFields();
//返回此源对象的运行时类
Class scls = soure.getClass();
剩余10页未读,继续阅读
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 深入理解23种设计模式
- 制作与调试:声控开关电路详解
- 腾讯2008年软件开发笔试题解析
- WebService开发指南:从入门到精通
- 栈数据结构实现的密码设置算法
- 提升逻辑与英语能力:揭秘IBM笔试核心词汇及题型
- SOPC技术探索:理论与实践
- 计算图中节点介数中心性的函数
- 电子元器件详解:电阻、电容、电感与传感器
- MIT经典:统计自然语言处理基础
- CMD命令大全详解与实用指南
- 数据结构复习重点:逻辑结构与存储结构
- ACM算法必读书籍推荐:权威指南与实战解析
- Ubuntu命令行与终端:从Shell到rxvt-unicode
- 深入理解VC_MFC编程:窗口、类、消息处理与绘图
- AT89S52单片机实现的温湿度智能检测与控制系统