`
yping061
  • 浏览: 8342 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

利用Java序列化机制进行克隆深拷贝

阅读更多
  利用序列化机制进行深拷贝:
A.将对象序列化到输出流再读回即可,且中间过程无需写入文件,只需使用ByteArrayOutputStream将数据存为字节数组.
  *需要注意的是,这种克隆方法比显式地在clone方法中创建一个新的对象或克隆数据域要慢一些.
   import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


/**
* @version 把要通过序列化进行克隆的类继承该SerialCloneable
* @author yping061
*
*/
public class SerialCloneable implements Cloneable,Serializable
{
	public Object clone()
	{
		try
		{
		 //save the object to a byte array
		 ByteArrayOutputStream bout=new ByteArrayOutputStream();
		 ObjectOutputStream out=new ObjectOutputStream(bout);
		 out.writeObject(this);
		 out.close();
		 
		 //read a clone of the object from the byte array
		 ByteArrayInputStream bin=new ByteArrayInputStream(bout.toByteArray());
		 ObjectInputStream in=new ObjectInputStream(bin);
		 Object result=in.readObject();
		 in.close();
		 
		 return result;
		}catch(Exception e)
		{
		  return null;	
		}
	}

}

   
分享到:
评论

相关推荐

    使用java反射机制实现java的深拷贝

    本文将探讨如何利用Java的反射机制来实现深拷贝。 首先,我们需要了解Java反射的基本概念。反射是Java提供的一种动态类型能力,允许程序在运行时检查类、接口、字段和方法的信息,并能直接操作这些对象。通过`Class...

    java List 深度复制方法

    以下是一个简单的深复制示例,使用了Java的序列化机制: ```java import java.io.*; public class DeepCopyExample { public static <T> List<T> deepCopy(List<T> originalList) throws IOException, ...

    浅拷贝(浅复制、浅克隆)、深拷贝(深复制、深克隆)实战工程

    2. **序列化和反序列化**:通过将对象序列化为字节流,然后反序列化为新的对象,可以实现深拷贝。这种方法适用于所有的Java对象,但效率较低,并且需要类实现Serializable接口。 3. **手动复制属性**:程序员可以...

    java对象复制克隆

    标题中的“java对象复制克隆”主要涉及的是深拷贝,这是一种创建一个新对象的方式,新对象不仅复制了原对象的所有属性,还复制了嵌套的对象引用,使得修改复制后的对象不会影响到原始对象。 **浅拷贝**:在浅拷贝中...

    java的深度克隆的例子

    可以通过实现`Serializable`接口并进行序列化和反序列化,或者使用自定义的拷贝构造函数和工厂方法来实现。选择哪种方法取决于具体的应用场景和性能需求。理解并正确使用深度克隆在处理复杂的对象结构时尤其重要,...

    java深度克隆

    1. **序列化方式**:这是最常见的实现方式之一,通过将对象转换为字节流,再将字节流转换回对象来完成深拷贝的过程。这种方式简单且适用范围广,但要求对象必须实现`Serializable`接口。 2. **手工编写方式**:对于...

    序列化(Serialization)实现深拷贝.md

    深拷贝:指的是拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。如果引用类型里面还包含很多引用类型,或者内层引用类型的类里面又包含多层...这时我们可以用序列化来实现对象的深拷贝。

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

    实现深拷贝通常需要手动编写代码,或者利用序列化和反序列化的方法。例如,可以通过创建一个新的对象,并逐个复制原对象的属性(包括引用类型的属性),或者使用序列化库(如Google的Gson或Apache的BeanUtils)来...

    Java利用序列化实现对象深度clone的方法

    总的来说,Java序列化提供了一种实现对象深度克隆的方法,适用于需要完整复制对象及其关联对象的情况。然而,这也带来了一些潜在问题,如性能影响、安全风险(因为序列化的对象可能被恶意用户反序列化以执行代码)...

    android 浅复制和深复制-Java Generic Deep Copy 篇

    本文将深入探讨Java中的浅复制和深复制,并以Android为背景,结合具体的实例讲解如何实现Java泛型深拷贝。 首先,我们要理解浅复制和深复制的概念。浅复制(Shallow Copy)是指创建一个新的对象,然后将原对象引用...

    java 对象克隆

    在Java编程语言中,对象克隆是一种创建一个与原对象具有相同数据的新对象的过程。...对于更复杂的场景,可以自定义克隆逻辑或利用序列化来实现深克隆。理解并正确应用这些概念对于开发复杂的Java应用程序至关重要。

    Java对象(最后面是序列化的知识)1

    Java编程语言中,对象的创建和管理涉及到一系列...总结来说,Java对象的生命周期涉及类加载、初始化,以及对象的创建、克隆、序列化和反序列化等步骤,每一步都可能需要特定的处理和优化,以满足不同的需求和安全考虑。

    java中对象的序列化与反序列化深入讲解

    3. **深度克隆**:通过序列化和反序列化,可以实现对象的深拷贝,即创建一个与原对象完全相同的新对象,其内部状态与原对象一致,不受原对象后续修改的影响。 在实际使用中,需要注意的是,序列化可能会暴露对象的...

    JAVA_对象克隆

    4. 克隆可能会带来性能开销,对于大量对象的复制,要考虑其他替代方案,如拷贝构造函数或序列化。 5. 避免使用`clone()`方法来解决所有复制对象的需求,因为其易用性和灵活性有限,尤其是在面对复杂的对象结构时。...

    深入JAVA对象深度克隆的详解

    总之,Java对象的深度克隆是解决复杂对象复制问题的有效手段,通过序列化和反序列化确保了新旧对象的完全独立。然而,它也有其局限性和潜在性能影响,所以在实际应用中应根据具体情况选择合适的克隆策略。

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

    1. **实现Serializable接口**:利用序列化和反序列化来实现深拷贝。首先将对象序列化为字节数组,然后再将这个字节数组反序列化为新的对象。这种方法适用于所有实现了Serializable接口的对象,但效率较低,并且如果...

    深入理解Java中的克隆

    这通常需要手动编写代码来实现,或者使用序列化和反序列化的方法。深拷贝可以确保两个对象完全独立,改变其中一个不会影响另一个。 总结一下,Java中的克隆是一个复杂而重要的概念,主要用于创建对象的副本。要正确...

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

    - **序列化与反序列化**:将对象序列化为字节数组,然后再反序列化为新的对象,实现深拷贝。 3. **注解实现对象复制** - **Apache Commons BeanUtils库**:提供了`BeanUtils.copyProperties()`方法,可以快速实现...

Global site tag (gtag.js) - Google Analytics