`
lhxctc
  • 浏览: 53080 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

经常使用的一些克隆实现

    博客分类:
  • Java
阅读更多
在实践中往往需要使用到克隆,您可以使用java本身提供的克隆实现,这里我就不说这种实现了。
给您介绍两种比较常用的方法,第一个是dozer。第二个是apache commons-beanutil,希望对大家有帮助

第一种实现依赖包分别是commons-lang.jar,commons-loggin.jar,commons-collections.jar,commons-beanutils.jar
如:


import net.sf.dozer.util.mapping.DozerBeanMapper;
import net.sf.dozer.util.mapping.MapperIF;


public class XZou {
	
	private String name;

	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public XZou(){
		
	}
	public XZou(XZou zou){//构造函数中克隆
		MapperIF mapper = new DozerBeanMapper();
		mapper.map(zou, this);
	}
	public static void main(String[] args) {
		
		
		XZou zou1 = new XZou();
		
		zou1.setName("张三");
		
		System.out.println(zou1.getAge());// 0岁
		
		XZou zou2 = new XZou(zou1);//克隆一个对象zou2,他的名称和年龄和zou1是一样的
		
		zou1.setAge(10);//设置zou1的年龄是10岁
		
		System.out.println(zou1.getAge());//10
		
		System.out.println(zou2.getName() + "," + zou2.getAge());//张三,0
		
		
	}
	
	
}



第二种commons-beanutil实现依赖包分别是commons-loggin.jar,commons-collections.jar,commons-beanutils.jar
如:

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;


public class XZou {
	
	private String name;

	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public XZou(){
		
	}

	public static void main(String[] args) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
		
		
		XZou zou1 = new XZou();
		
		zou1.setName("张三");
		
		System.out.println(zou1.getAge());// 0岁
		
		XZou zou2 = (XZou) BeanUtils.cloneBean(zou1);//克隆一个对象zou2,他的名称和年龄和zou1是一样的
		
		zou1.setAge(10);//设置zou1的年龄是10岁
		
		System.out.println(zou1.getAge());//10
		
		System.out.println(zou2.getName() + "," + zou2.getAge());//张三,0
		
		
	}
	
	
}

0
0
分享到:
评论

相关推荐

    在Unity3D中实现克隆脚本2

    本文将深入探讨如何在Unity3D中实现对象的克隆,特别是通过脚本来完成这一过程。 首先,Unity3D提供了两种主要的克隆方式:`Instantiate`函数和克隆实例化。`Instantiate`是Unity内置的函数,可以用于创建对象的...

    Horizon链接克隆到即时克隆的转变.pdf

    Horizon 部署和管理内部 VM,使用 Internal Template、Replica VM、Parent VM,可以实现极速配置。在每个主机上需要额外的内存,当不使用 ParentVMs 时,provisioning 会变慢,但在某些场景中并不明显。Horizon 优化...

    使用克隆exe执行任务

    下面我们将详细探讨克隆EXE的原理、实现方式以及它在不同场景中的应用。 1. **克隆EXE的原理** 克隆EXE的基本思想是复制原始可执行文件,并对其进行修改,以实现不同的功能。这个过程通常包括: - **复制原始文件...

    设计模式-克隆模式(讲解及其实现代码)

    克隆模式的核心思想在于提供一个方法,使得用户可以复制一个对象而不需要了解对象内部的具体实现细节。 在Java中,克隆有两种方式:浅克隆和深克隆。浅克隆只复制对象本身,而不复制对象引用的对象,因此如果对象中...

    java 深克隆与浅克隆

    克隆机制的保护机制是通过在 Object 中将 Clone 方法申明为 protected 实现的,这样可以保证只有相应类内部才能“克隆”对象。例如,在 Employee 类中,可以申明 Clone 方法为 protected,以保证只有 Employee 类...

    java 深克隆 浅克隆

    - **算法中**:在一些算法实现中,如搜索或排序,克隆可以帮助我们处理临时对象,而不影响原始数据。 ### 4. 注意事项 - 实现`Cloneable`接口时,Java官方建议覆盖`clone()`方法并抛出`CloneNotSupportedException...

    自动网络克隆工具 v2.3.01绿色免费版

    1、客户端电脑无须U盘启动、无须光驱启动等等,即可实现网络启动克隆,非常方便。支持批量同时克隆。特别是在批量装机时,免开拆机箱实现无驱克隆。 2、自动网络克隆,我们的操作只需要选择克隆文件即可,无须输入...

    EBS R12.2环境克隆(使用rman备份)

    ### EBS R12.2环境克隆(使用rman备份) #### 概述 本文档旨在详细介绍如何通过Oracle的Recovery Manager (RMAN)工具来进行EBS (Enterprise Business Suite) R12.2环境的克隆过程。该方法不仅能够有效备份数据,还...

    基于Linux系统网络克隆的实现.pdf

    【基于Linux系统网络克隆的实现】 网络克隆是一种在计算机机房中快速部署和更新软件系统的有效方法,尤其适用于教育和培训环境。本文详细介绍了如何在Linux环境下构建无盘启动系统,并利用Ghost83Corp的IP组播技术...

    网络克隆技术的实现步骤

    至于deepin GHOST,它是实现网络克隆的关键。它利用PXE启动模式,可以让多台计算机同时从网络上获取并安装操作系统镜像。这在大规模部署系统时非常有用,可以避免逐台机器手动安装的繁琐。在使用deepin GHOST之前,...

    基于python的实时语音克隆实现

    基于Python的实时语音克隆不仅实现了这一功能,还具备原生多语言支持、免费商业使用以及灵活的语音风格控制等优势。下面将详细探讨这些知识点。 首先,原生多语言支持是Python实时语音克隆的一大亮点。Python作为...

    如何使用vsphere powerCLI批量克隆虚拟机.docx

    "使用 Vsphere PowerCLI ...使用上述脚本可以批量克隆虚拟机,同时也可以实现虚拟机的开机、关机及批量删除等操作。 Vsphere PowerCLI 是一个功能强大且灵活的工具,能够帮助管理员更快速、更容易地管理虚拟机环境。

    java 深克隆浅克隆

    克隆技术在处理复杂数据结构、避免对象共享以及实现对象复制等方面有着广泛的应用。Java提供了两种主要的克隆方式:深克隆和浅克隆。 1. 浅克隆(Shallow Clone): 浅克隆是通过调用对象的`clone()`方法来实现的,...

    中兴B600v4克隆MAC地址序列号免费实现双IPTV

    本文将围绕“中兴B600v4克隆MAC地址序列号免费实现双IPTV”这一主题展开,详细解释相关知识点。 首先,IPTV(Internet Protocol Television)是一种通过互联网协议传输电视内容的技术。电信运营商通常会为每个用户...

    JAVA浅克隆与深克隆

    下面是一个使用序列化实现深克隆的例子: ```java import java.io.*; // 在Student类中添加序列化和反序列化方法 public class Student implements Serializable { // ...其他代码... public Student deepClone...

    网站克隆大师,可以轻松克隆网站、修改网站和发布网站

    2. **启动与设置**:安装完成后,运行程序,首次使用可能需要进行一些基本设置,例如输入源网站地址、选择本地保存位置以及目标服务器信息。 3. **克隆网站**:在主界面中,输入要克隆的网站URL,然后点击克隆按钮...

    clone 深度克隆对象

    在Java中,实现深度克隆通常有两种方式:一是通过实现Cloneable接口并重写Object类的clone()方法;二是使用序列化和反序列化技术。前者需要特别注意的是,只有实现了Cloneable接口的类才能调用默认的clone()方法,...

    网络克隆知识总结,帮你选择正确的克隆方式

    目前常见的网络克隆实现方式有两种:一是通过客户机上的引导文件;二是通过支持PXE(预启动执行环境)的网卡从服务器下载引导文件。 #### 二、网络克隆方法及其优缺点 ##### 方法一:单机克隆 - **步骤**:先安装...

    vmware esxi 代码虚拟机克隆

    在标题和描述中提到的“vmware esxi 代码虚拟机克隆”就是针对这种情况,即在VMware ESXi服务器上没有直接开放API进行虚拟机克隆的情况下,通过编写脚本来实现这一功能。 通常,VMware ESXi的API,如vSphere API和...

Global site tag (gtag.js) - Google Analytics