`
elicer
  • 浏览: 133974 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

手动 序列化 clone

    博客分类:
  • Java
阅读更多
package com.beetle.framework.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Random;
import java.io.*;

public class OtherUtil {

	/**
	 * 对象深度克隆
	 * 
	 * @param originObj
	 * @return
	 */
	public final static Object objectClone(Object originObj) {
		ByteArrayOutputStream bao = null;
		ByteArrayInputStream bai = null;
		ObjectOutputStream oos = null;
		ObjectInputStream ois = null;
		try {
			bao = new ByteArrayOutputStream();
			oos = new ObjectOutputStream(bao);
			oos.writeObject(originObj);
			oos.flush();
			oos.close();
			bai = new ByteArrayInputStream(bao.toByteArray());
			ois = new ObjectInputStream(bai);
			Object obj = ois.readObject();
			ois.close();
			oos = null;
			ois = null;
			return obj;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			try {
				if (bao != null) {
					bao.close();
					bao = null;
				}
				if (bai != null) {
					bai.close();
					bai = null;
				}
			} catch (IOException e) {
			}
		}
	}
}

分享到:
评论

相关推荐

    关于 Java 对象序列化您不知道的 5 件事

    序列化涉及将对象转换为字节流,而克隆是直接创建一个与原对象具有相同属性的新对象,通常通过实现`Cloneable`接口并覆盖`clone()`方法来实现。 9. **序列化框架** 除了Java内置的序列化机制,还有许多第三方框架...

    C#浅拷贝(MemberwiseClone等多种方法)与深拷贝(反射、多种反序列化)实例

    在C#中,可以使用几种不同的方法来实现深拷贝,如手动实现、序列化/反序列化、反射等。 1. 手动实现:针对每个类,编写复制所有字段的构造函数或方法。 2. 序列化/反序列化:利用`BinaryFormatter`或`XmlSerializer...

    java Clone

    如果对象的成员变量是不可克隆的(如`final`字段或不可克隆的第三方类),则可能需要采用其他策略,比如序列化和反序列化,或者手动创建新对象并复制属性。 总之,Java的`clone`机制提供了复制对象的能力,通过实现...

    java clone的小例子

    然而,由于其浅拷贝的特性,开发者需要根据具体需求来决定是否使用它,或者选择其他复制策略,比如序列化和反序列化,或者使用构造函数来创建新对象。在实际编程中,理解`clone()`的工作原理和限制是非常重要的,这...

    clone 深度克隆对象

    实现深度克隆可以采用实现Cloneable接口并重写clone(),或者利用序列化和反序列化技术,具体选择取决于应用场景和性能需求。在实际项目中,应根据具体情况权衡效率和安全性,合理选择克隆策略。

    clone type

    - 当`clone()`方法不适合需求时,可以考虑使用序列化和反序列化来创建对象的副本,这种方法可以实现深拷贝,但比`clone()`效率低。 5. **性能考虑**: - 克隆操作可能会有性能开销,特别是在处理大型对象或复杂...

    Java深复制与浅复制&Clone

    可以使用序列化(Serialization)和反序列化(Deserialization)来实现深复制,或者手动编写代码递归复制所有属性。例如: ```java public class MyClass implements Serializable { private String str; private...

    Java clone方法详解及简单实例

    Java中的`clone`方法是Java语言提供的一种复制对象的机制,它允许创建一个现有对象的副本,这个副本具有与原始对象相同...在某些情况下,使用构造函数或者序列化/反序列化等其他技术来创建对象的副本可能是更好的选择。

    JSONtext-Object-Serialization:JSONtext的对象序列化策略

    JSONtext对象序列化序列化LabVIEW:trade_mark:对象。 目录关于该项目提供JSONtext扩展,以将对象从JSON序列化到JSON。建于入门要启动并运行本地副本,请遵循以下简单步骤。先决条件LabVIEW:trade_mark:2017或更高...

    java深度克隆

    2. **手工编写方式**:对于复杂对象或者包含大量循环引用的对象,可以通过重写对象中的`clone()`方法并手动处理其中的引用类型成员变量来实现深度克隆。这种方式更加灵活,但编写起来相对复杂且容易出错。 #### 三...

    java 深克隆 浅克隆

    这通常涉及序列化和反序列化的过程,或者手动复制每个引用类型的字段。 例如: ```java class DeepCloneExample implements Serializable { private SomeObject ref; public DeepCloneExample deepClone() ...

    Caffe2 Windows third_party(git clone失败或速度慢时可用)

    1. **protobuf**: Protocol Buffers是Google开发的一种数据序列化协议,用于结构化数据的序列化,可以看作是XML、JSON等格式的替代方案,但更小巧、更快。在Caffe2中,protobuf用于模型的存储和交换。 2. **glog**:...

    Android下Activity间通信序列化过程中的深浅拷贝浅析

    对于实现深拷贝,一种方法是手动实现clone()方法,但这需要类实现Cloneable接口,并且需要为每个引用类型字段提供深拷贝逻辑。另一种更常见的方式是使用序列化(Serialization)和反序列化(Deserialization)。在...

    原型模式示例原型模式示例

    在实际项目中,除了手动实现`clone()`方法,还可以利用序列化和反序列化技术实现对象的复制,或者使用第三方库如Google的Gson库或者Jackson库,它们提供了更灵活的序列化和反序列化策略。但这种方式可能不适合所有...

    JAVA浅克隆与深克隆

    在Java中,深克隆通常通过序列化和反序列化来实现,或者手动创建一个新的对象并复制所有字段。下面是一个使用序列化实现深克隆的例子: ```java import java.io.*; // 在Student类中添加序列化和反序列化方法 ...

    java的深度克隆的例子

    为了实现深度克隆,我们需要手动处理这些引用,通常通过序列化和反序列化的方式。 以下是实现深度克隆的一种常见方法: 1. **实现Serializable接口**:让需要克隆的对象实现`Serializable`接口,这样可以将对象...

    Java实现实体类拷贝[深,很深的那种...]

    实现深拷贝通常需要序列化和反序列化,或者手动创建新的对象并复制所有属性。 2. **深拷贝的实现方式** - **序列化和反序列化**:如果实体类实现了`Serializable`接口,可以利用`ObjectOutputStream`和`...

    Java中的深拷贝(深复制)和浅拷贝(浅复制) 示例代码

    深拷贝可以通过序列化和反序列化实现,或者手动实现Cloneable接口并重写`clone()`方法。 示例代码(使用序列化): ```java import java.io.*; class MyClass implements Serializable { int a; String b; ...

    浅谈Java中实现深拷贝的两种方式—clone() & Serialized

    但是,Serialized方法需要对象实现Serializable接口,并且可能会出现序列化和反序列化的错误。 Java中实现深拷贝的两种方式—clone()和Serialized—are two effective methods to achieve deep copying in Java. By...

Global site tag (gtag.js) - Google Analytics