`

BeanUtils /深clone/浅clone

    博客分类:
  • java
阅读更多
BeanUtils.copyProperties() 用法
一、简介:

        BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。

二、用法:

        如果你有两个具有很多相同属性的JavaBean,我们对一个对象copy 到另外一个对象,可用用下面的方法。

1. 导入commons-beanutils.jar
2. 导入commons-logging-1.1.jar
3. 构建UserManageVo , UserManageEvent 对象 ,这两个对象的属性相同
4. 调用 BeanUtils.copyProperties(UserManageVo, UserManageEvent)
java 主要代码

1import java.lang.reflect.InvocationTargetException;
2import org.apache.commons.beanutils.BeanUtils;
3import test.BasicEvent;
4import test.UserManageEvent;
5import test.UserManageVo;
6
7public class TestCase {
8   
9    public static void main(String[] args) {
10        UserManageEvent event = new UserManageEvent();
11        event.setName("zhangsan");
12        event.setUserId("1");
13       
14        BasicEvent basicEvt = new BasicEvent();
15        basicEvt.setEventId("2");
16        basicEvt.setVersion("version");
17       
18        event.setEvent(basicEvt);
19        UserManageVo vo = new UserManageVo();
20        try {
21            BeanUtils.copyProperties(vo, event);
22            System.out.println(vo.getUserId());
23            System.out.println(vo.getName());
24            System.out.println(vo.getEvent());
25        } catch (IllegalAccessException e) {
26            e.printStackTrace();
27        } catch (InvocationTargetException e) {
28            e.printStackTrace();
29        }
30    }
31}
分享到:
评论

相关推荐

    java中的指针,引用及对象的clone

    本文将深入探讨Java中的引用以及对象的克隆机制,包括浅拷贝和深拷贝的区别及其应用场景。 #### 二、Java中的引用 在Java中,当使用`new`关键字创建一个对象时,实际上创建的是一个指向该对象的引用。例如,以下...

    《剑指offer》Java浅拷贝和深拷贝.pdf

    此外,还可以使用其他拷贝方式,比如使用`copy-constructor`(构造函数的副本)或`BeanUtils.copyProperties()`(Apache Commons BeanUtils库提供),但这些方法也需根据具体情况判断是否能实现深拷贝。 总之,理解...

    Java 细数浅拷贝和深拷贝

    ### 深入理解浅拷贝与深拷贝 #### 关于引用 在Java中,对象的处理方式涉及到了“引用”的概念。简单地说,当我们谈论一个对象时,实际上是通过一个引用指向该对象所在的内存位置。Java中有两种数据类型:基本数据...

    java List 深度复制方法

    在Java中,当我们使用`clone()`方法或`System.arraycopy()`进行复制时,通常得到的是浅复制的结果。这意味着原始对象和复制对象中的引用指向内存中的同一块区域。如果List中的元素是基本类型,这种复制方式是没问题...

    java深入理解浅拷贝和深拷贝

    在Java编程中,深入理解浅拷贝和深拷贝是非常重要的概念,特别是在处理对象复制时。浅拷贝和深拷贝的区别在于复制对象时对内存中数据的处理方式。 浅拷贝(Shallow Copy)指的是创建一个新的对象,该对象与原对象...

    拷贝模式

    通常,`Cloneable`接口的使用是深拷贝的一种标志,但需要注意的是,不正确实现`clone()`方法可能会导致浅拷贝。 在某些情况下,如使用第三方工具或框架,拷贝模式可能会变得更加复杂。例如,Spring框架提供了`...

    java不同对象及集合的多次复制

    - **clone()方法**:Java的Object类提供了一个`clone()`方法,但默认实现是浅拷贝。如果需要深拷贝,需要在每个需要复制的对象类中实现`Cloneable`接口并重写`clone()`方法。 - **构造函数**:通过对象的构造函数...

    MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象

    首先,我们要理解Java中的对象复制有浅拷贝和深拷贝两种方式。浅拷贝只复制对象本身,不复制引用的对象;深拷贝不仅复制对象,还复制对象中引用的对象。在描述中提到的方法,很可能是关于深拷贝的实现。 在Java中,...

    EntityCopyDemo

    浅拷贝是通过调用对象的`clone()`方法或者使用`java.lang.reflect.Field`来实现的。它创建的是原对象的一个副本,但所有引用的对象仍然是相同的。这意味着如果原对象的内部属性是对象,那么拷贝后的对象与原对象共享...

    Java深度复制功能与用法实例分析

    对于不可序列化的类,可以考虑使用克隆方法(`clone()`)或者其他第三方库如Apache Commons Lang的`BeanUtils.copyProperties()`。 深度复制的注意事项: 1. 实现`Serializable`接口的类的所有成员变量都会被复制,...

    JAVA 深层拷贝 DeepCopy的使用详解

    然而,Java的标准库并不直接支持深拷贝,因为Java的`clone()`方法默认执行的是浅拷贝,只复制对象本身而不复制其引用的对象。因此,开发者需要自定义实现深拷贝机制。本文将详细讲解如何在Java中实现深拷贝,并提供...

    基于JavaWeb的期刊管理系统+课设报告.zip

    1、get clone 我的这个项目git<br/> 2、使用idea打开项目目录<br/> 3、导入sql数据库文件(默认账号密码在工程里有一个excle存储)<br/> 4、在项目结构中配置相应的lib路径<br/> 5、配置jdk版本17<br/> 6、修改...

    基于反射解决类复制的实现方法

    在Java编程中,类复制...在实际应用中,还可以考虑使用Java的`clone()`方法、`Serializable`接口以及第三方库如Apache Commons BeanUtils的`copyProperties()`方法来实现类复制,它们提供了更加方便和安全的解决方案。

    jAVA编程规范J2EE代码规范

    - 实现`Cloneable`接口并重写`clone()`方法以支持对象的深拷贝或浅拷贝。 9. **2.9 类方法** - 提供静态方法来执行不依赖于类实例的操作。 10. **2.10 toString方法** - 重写`toString()`方法以提供类实例的...

    Java灵魂17问.pdf

    如果需要独立的列表副本,应该使用`clone()`或`copy()`方法。 在for循环中使用`+`进行字符串拼接效率较低,因为每次操作都会创建新的字符串对象。建议使用`StringBuilder`或`StringBuffer`类进行字符串连接,它们在...

    reflection给相同对象赋值

    当需要为相同类的两个对象赋值时,通常我们会直接调用拷贝构造函数或实现`clone()`方法。然而,如果类没有提供这些功能,或者我们希望动态地处理多个类的赋值操作,反射就派上用场了。 以下是使用反射进行对象赋值...

    java程序的代码规范

    - 如果类需要支持克隆功能,则应实现`Cloneable`接口并重写`clone()`方法。 **2.9 类方法** - 类方法(静态方法)应按一定逻辑顺序排列,并添加适当的Javadoc注释。 **2.10 toString方法** - 实现`toString()`...

Global site tag (gtag.js) - Google Analytics