`

Java实现深克隆

    博客分类:
  • java
 
阅读更多

 引用至:http://blog.csdn.net/kenthong/article/details/5758884

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public abstract class BeanUtil {
	@SuppressWarnings("unchecked")
	public static  T cloneTo(T src) throws RuntimeException {
		ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
		ObjectOutputStream out = null;
		ObjectInputStream in = null;
		T dist = null;
		try {
			out = new ObjectOutputStream(memoryBuffer);
			out.writeObject(src);
			out.flush();
			in = new ObjectInputStream(new ByteArrayInputStream(memoryBuffer.toByteArray()));
			dist = (T) in.readObject();
		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			if (out != null)
				try {
					out.close();
					out = null;
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			if (in != null)
				try {
					in.close();
					in = null;
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
		}
		return dist;
	}
}

 

分享到:
评论

相关推荐

    java 深克隆 浅克隆

    为了实现深克隆,通常需要自定义克隆逻辑,因为`Object`的`clone()`方法无法处理引用类型的深度复制。这通常涉及序列化和反序列化的过程,或者手动复制每个引用类型的字段。 例如: ```java class DeepCloneExample...

    java 深克隆与浅克隆

    Java 深克隆与浅克隆 Java 中的克隆机制可以让我们方便地制造出一个对象的副本来,但是在克隆过程中需要注意浅克隆和深克隆的区别。 浅克隆(Shallow Clone)是指对对象的域进行简单的 copy,对象的reference变量...

    java 深克隆浅克隆

    实现深克隆通常需要自定义实现,因为Java的`clone()`方法不支持自动深度克隆。一种常见的实现方法是序列化和反序列化对象。首先,将对象序列化为字节数组,然后从字节数组反序列化为新的对象。这种方法可以保证所有...

    JAVA浅克隆与深克隆

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

    java的深度克隆的例子

    首先,Java提供了两种基本的克隆方式:浅克隆(shallow clone)和深克隆。浅克隆仅仅复制对象本身,而不复制对象所引用的对象。而深克隆则会递归地复制对象及所有引用的对象,确保新创建的对象和原始对象及其引用的...

    Java对象的深克隆与浅克隆详解.zip(wcb2003)

    实现深克隆的方法通常需要自定义序列化和反序列化过程,因为Java的标准`clone()`方法不支持深克隆。可以使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`来实现: ```java public class MyClass ...

    克隆和序列化(Java )

    实现深克隆可能需要自定义的克隆方法,或者使用序列化和反序列化技术。 4. **示例**:`克隆.txt`可能包含以下示例代码: ```java class MyClass implements Cloneable { private Object nestedObj; public ...

    Java中的克隆(Clone)机制

    在`Employee`类中,可以通过重写`clone()`方法并显式调用`hireDay.clone()`来实现深克隆,确保每个克隆的`Employee`对象拥有自己的`Date`对象副本。 3. **`clone()`方法的保护机制** `Object`类中的`clone()`方法...

    JAVA_对象克隆

    2. 深克隆:为了实现深克隆,需要自定义`clone()`方法,不仅复制基本类型字段,还要递归地复制所有引用对象,确保新对象和原始对象之间的引用独立。 三、实现对象克隆的步骤 1. 实现`Cloneable`接口:为了让对象...

    java List 深度复制方法

    但对于可变对象(如自定义类实例),我们需要通过序列化和反序列化,或者手动创建新对象并设置属性值来实现深复制。 以下是一个简单的深复制示例,使用了Java的序列化机制: ```java import java.io.*; public ...

    java对象复制克隆

    在Java中实现深拷贝,我们可以有以下几种方法: 1. **实现Serializable接口**:这是通过序列化和反序列化实现深拷贝的方法。首先将对象转换为字节数组,然后从这个字节数组中反序列化出一个新的对象。这种方法简单...

    java 对象克隆

    实现深克隆通常需要递归地遍历对象的所有属性,包括嵌套的对象和集合。对于复杂的对象结构,可以使用序列化和反序列化技术来实现深克隆。首先,将对象序列化为字节数组,然后反序列化为新的对象。这种方法可以确保...

    如何进行Java对象的克隆.pdf

    在 Java 中,实现深克隆可以通过序列化(Serialization)和反序列化(Deserialization)来实现。这是因为序列化可以将对象的所有成员变量转换为字节流,然后可以将字节流反序列化成一个新的对象。 在 Java 中,...

    Java对象的复制克隆

    在Java中,实现深拷贝通常需要自定义拷贝构造函数或重写 `clone()` 方法。例如: ```java class Container implements Cloneable { String str = "Hello"; @Override protected Object clone() throws ...

    Java实现克隆的三种方式实例总结

    Java提供了三种方式来实现克隆:浅克隆、深克隆和使用Serializable实现深克隆。下面我们将对这三种方式进行详细的分析和实例讲解。 浅克隆(浅复制) 浅克隆是指将一个对象的所有成员变量值复制到另一个对象中,但...

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

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

    java深度克隆

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

    实例分析java对象中浅克隆和深克隆

    浅克隆和深克隆在Java对象中的应用 在Java编程语言中,克隆(Clone)是一种常见的对象复制机制。克隆可以分为浅克隆(Shallow Clone)和深克隆(Deep Clone)两种。浅克隆仅复制对象的引用,而深克隆则完全复制对象...

Global site tag (gtag.js) - Google Analytics