引用至: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; } }
相关推荐
为了实现深克隆,通常需要自定义克隆逻辑,因为`Object`的`clone()`方法无法处理引用类型的深度复制。这通常涉及序列化和反序列化的过程,或者手动复制每个引用类型的字段。 例如: ```java class DeepCloneExample...
Java 深克隆与浅克隆 Java 中的克隆机制可以让我们方便地制造出一个对象的副本来,但是在克隆过程中需要注意浅克隆和深克隆的区别。 浅克隆(Shallow Clone)是指对对象的域进行简单的 copy,对象的reference变量...
实现深克隆通常需要自定义实现,因为Java的`clone()`方法不支持自动深度克隆。一种常见的实现方法是序列化和反序列化对象。首先,将对象序列化为字节数组,然后从字节数组反序列化为新的对象。这种方法可以保证所有...
下面是一个使用序列化实现深克隆的例子: ```java import java.io.*; // 在Student类中添加序列化和反序列化方法 public class Student implements Serializable { // ...其他代码... public Student deepClone...
首先,Java提供了两种基本的克隆方式:浅克隆(shallow clone)和深克隆。浅克隆仅仅复制对象本身,而不复制对象所引用的对象。而深克隆则会递归地复制对象及所有引用的对象,确保新创建的对象和原始对象及其引用的...
实现深克隆的方法通常需要自定义序列化和反序列化过程,因为Java的标准`clone()`方法不支持深克隆。可以使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`来实现: ```java public class MyClass ...
实现深克隆可能需要自定义的克隆方法,或者使用序列化和反序列化技术。 4. **示例**:`克隆.txt`可能包含以下示例代码: ```java class MyClass implements Cloneable { private Object nestedObj; public ...
在`Employee`类中,可以通过重写`clone()`方法并显式调用`hireDay.clone()`来实现深克隆,确保每个克隆的`Employee`对象拥有自己的`Date`对象副本。 3. **`clone()`方法的保护机制** `Object`类中的`clone()`方法...
2. 深克隆:为了实现深克隆,需要自定义`clone()`方法,不仅复制基本类型字段,还要递归地复制所有引用对象,确保新对象和原始对象之间的引用独立。 三、实现对象克隆的步骤 1. 实现`Cloneable`接口:为了让对象...
但对于可变对象(如自定义类实例),我们需要通过序列化和反序列化,或者手动创建新对象并设置属性值来实现深复制。 以下是一个简单的深复制示例,使用了Java的序列化机制: ```java import java.io.*; public ...
在Java中实现深拷贝,我们可以有以下几种方法: 1. **实现Serializable接口**:这是通过序列化和反序列化实现深拷贝的方法。首先将对象转换为字节数组,然后从这个字节数组中反序列化出一个新的对象。这种方法简单...
实现深克隆通常需要递归地遍历对象的所有属性,包括嵌套的对象和集合。对于复杂的对象结构,可以使用序列化和反序列化技术来实现深克隆。首先,将对象序列化为字节数组,然后反序列化为新的对象。这种方法可以确保...
在 Java 中,实现深克隆可以通过序列化(Serialization)和反序列化(Deserialization)来实现。这是因为序列化可以将对象的所有成员变量转换为字节流,然后可以将字节流反序列化成一个新的对象。 在 Java 中,...
在Java中,实现深拷贝通常需要自定义拷贝构造函数或重写 `clone()` 方法。例如: ```java class Container implements Cloneable { String str = "Hello"; @Override protected Object clone() throws ...
Java提供了三种方式来实现克隆:浅克隆、深克隆和使用Serializable实现深克隆。下面我们将对这三种方式进行详细的分析和实例讲解。 浅克隆(浅复制) 浅克隆是指将一个对象的所有成员变量值复制到另一个对象中,但...
本文将探讨如何利用Java的反射机制来实现深拷贝。 首先,我们需要了解Java反射的基本概念。反射是Java提供的一种动态类型能力,允许程序在运行时检查类、接口、字段和方法的信息,并能直接操作这些对象。通过`Class...
1. **序列化方式**:这是最常见的实现方式之一,通过将对象转换为字节流,再将字节流转换回对象来完成深拷贝的过程。这种方式简单且适用范围广,但要求对象必须实现`Serializable`接口。 2. **手工编写方式**:对于...
浅克隆和深克隆在Java对象中的应用 在Java编程语言中,克隆(Clone)是一种常见的对象复制机制。克隆可以分为浅克隆(Shallow Clone)和深克隆(Deep Clone)两种。浅克隆仅复制对象的引用,而深克隆则完全复制对象...