java对象深度克隆的方法:
public static final Object deepClone(Object obj){ if(logger.isDebugEnabled()){ logger.debug("开始深度克隆对象"); } ByteArrayOutputStream bo = null; ObjectOutputStream oo = null; ByteArrayInputStream bi = null; ObjectInputStream oi = null; Object resultObject = null; try { //将对象写到流里 if(logger.isDebugEnabled()){ logger.debug("将对象写入二进制流"); } bo=new ByteArrayOutputStream(); oo=new ObjectOutputStream(bo); oo.writeObject(obj); //从流里读出来 if(logger.isDebugEnabled()){ logger.debug("在二进制流中将对象读出"); } bi=new ByteArrayInputStream(bo.toByteArray()); oi=new ObjectInputStream(bi); resultObject = oi.readObject(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { logger.fatal("没有找到对应的类"); } finally{ if(logger.isDebugEnabled()){ logger.debug("关闭流对象"); } try { if(oi != null){ oi.close(); oi = null; } if(bi != null){ bi.close(); bi = null; } if(oo != null){ oo.close(); oo = null; } if(bo != null){ bo.close(); bo = null; } } catch (IOException e) { logger.error("",e); } } return resultObject; }
欢迎大家拍砖
发表评论
-
Java编程中“为了性能”可以做的26件事
2013-09-02 10:48 632最近产品运行越来越慢了,除了新增机器内存外,还 ... -
针对代码审查的一些想法
2013-08-20 10:00 546在软件开发项 ... -
java web 伪静态化
2013-08-15 13:25 8731.示例 http://www.onlyfun.com ... -
http协议初解
2013-08-15 10:41 416最近总是遇到http ... -
java 注解 学习
2013-08-13 11:03 724Annotation注解(也称Meta Data元数据)为我 ... -
http 状态吗大全扫盲篇
2013-08-06 14:37 4941xx消息 这一类型的 ... -
算法导论学习系列之算法设计
2013-07-31 22:19 01、分治法 分治策略是将原问题划分成n个规 ... -
浅析Hibernate 懒加载
2013-04-23 09:55 718在使用Hibernate时,经常会遇到实体对象 ... -
Dom4j格式化转义字符问题
2013-04-03 17:53 8651、不得不说的XML CDATA部件 在XML文档中 ... -
概念数据模型、逻辑数据模型、物理数据模型详解
2013-03-15 13:11 1274转载:http://zz563143188.iteye.co ... -
java对象深度克隆
2013-02-20 15:30 653java对象深度克隆的方法: Java代码 ... -
spring mvc3中 addFlashAttribute 方法
2013-02-17 14:22 1794在spring mvc2中,当保存POJO到数据库后,要返回成 ... -
Android签名用keytool和jarsigner制作apk文件
2013-01-23 17:48 789Android程序的签名和Sym ... -
keytool安装证书流程
2013-01-23 17:23 10951 产生密钥对keytool -keystore E:/w ... -
android插件汇总
2013-01-23 17:22 10321、添加KeyTool插件的地 ... -
jQuery .tmpl(), .template() js模版学习
2012-12-28 13:50 2365最近无意中发现一个有趣的jQuery插件.tmpl(), ... -
db2,oracle,mysql常用命令比较
2012-07-06 10:06 927一、常用知识点 1、查看可以登陆的数据库: oracle:查看 ... -
maven插件配置
2012-02-01 16:40 911<!-- 工程编码插件 --&g ... -
drools条件部分之memberOf 学习
2012-01-16 17:26 1182memberOf 是用来判断某个Fact 对象的某个字段 ... -
eclipse各种插件汇总
2010-11-12 14:09 933Eclipse中安装Spket插件:h ...
相关推荐
Java对象的深度克隆是一种创建一个新对象的过程,该新对象与原始对象具有相同的数据,但两者之间相互独立,修改其中一个对象不会影响另一个。在Java中,深度克隆与浅克隆的区别在于处理对象内部引用的复杂性。浅克隆...
### Java深度克隆详解 #### 一、引言 在Java开发过程中,对象拷贝是一项常见操作。根据拷贝程度的不同,对象拷贝通常分为浅拷贝和深度拷贝两种类型。浅拷贝只复制对象的基本属性,而深度拷贝不仅复制基本属性,还...
在Java编程语言中,"深度克隆"是一个重要的概念,主要涉及到对象复制。深度克隆,也称为完全克隆,是指创建一个与原对象相同的新对象,不仅复制原对象的所有属性,还复制了原对象中引用的对象。这通常用于创建一个...
标签中的“复制java对象”、“深度克隆”和“深度复制实例”强调了我们要关注的是Java中如何实现对象的深拷贝,并提供了实际操作的例子。在编写代码时,应该遵循良好的编程实践,包括适当的命名、注释和错误处理,以...
java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)
可以更好的去理解java克隆的运用,尤其在多线程的运用过程中,多个对象进行操作过程中,可以先进行对 对象进行 备份,首先就克隆一份,当多线程对对象操作过程中,与异常情况,可以对对象进行恢复,克隆还其他的用途,学会...
深度克隆,也称为完全克隆,是一种创建新对象的技术,这个新对象不仅包含原始对象的所有属性值,还包含了嵌套对象的完整副本。这意味着如果一个对象中包含了其他对象的引用,深度克隆会创建这些引用对象的独立副本,...
在JavaScript中,深度克隆指的是创建一个新对象,其内容完全复制自源对象,包括所有嵌套的对象和数组。在处理复杂的数据结构时,深度克隆尤为重要,因为它能确保源对象不受目标对象的修改影响。标题提到的"一行代码...
这篇博客将探讨如何在Java中对List进行深度复制。 首先,我们来理解一下什么是浅复制和深复制。在Java中,当我们使用`clone()`方法或`System.arraycopy()`进行复制时,通常得到的是浅复制的结果。这意味着原始对象...
实现深克隆通常需要自定义实现,因为Java的`clone()`方法不支持自动深度克隆。一种常见的实现方法是序列化和反序列化对象。首先,将对象序列化为字节数组,然后从字节数组反序列化为新的对象。这种方法可以保证所有...
深度克隆是编程中一种重要的概念,特别是在处理复杂对象或者数据结构时,它能够创建一个完全独立的副本,这个副本不仅包含原始对象的所有属性,而且其内部引用的对象也会被复制,形成一个新的独立的对象树。...
Gson深度克隆是一个利用Gson库实现对象深度克隆的工具,主要通过将对象序列化为JSON字符串,再从JSON字符串反序列化为新对象。其核心原理是利用Gson的序列化与反序列化特性,无需手动实现克隆逻辑。 主要特点: ...
在Java编程语言中,克隆是创建一个对象副本的过程,这个副本与原对象有相同的属性值,但作为不同的对象存在。克隆分为两种主要类型:浅克隆(Shallow Clone)和深克隆(Deep Clone)。这篇博客文章将探讨这两种克隆...
- **Dozer库**:允许使用注解来定义复制规则,支持深度复制和类型转换,可以实现不同对象间的复制。 - **ModelMapper库**:提供了`ModelMapper`类,可以通过配置注解自动映射对象,简化了复制过程。 4. **集合与...
### Java深度复制源代码知识点解析 ...综上所述,该Java深度复制工具类通过反射机制实现了JavaBean对象的深度复制,适用于多种场景下的对象复制需求,但在实际应用中需要注意性能和特殊对象结构的处理问题。
总之,Java的克隆机制提供了一种创建对象副本的方式,浅克隆适用于简单的数据结构,而深度克隆适用于复杂的数据结构,以避免对象间的引用共享导致的意外修改。正确理解和使用克隆机制,可以帮助开发者更好地控制对象...
在Java编程语言中,克隆是一种创建对象副本的方法,它允许我们复制一个对象并得到一个与原对象相同但独立的新对象。克隆分为两种主要类型:深克隆和浅克隆。理解这两种克隆的区别是Java面向对象编程中的重要概念。 ...
Java编程实现对象克隆(复制)代码详解 在 Java 编程中,对象克隆是一种非常重要的技术,它允许开发者创建一个对象的副本,具有相同的属性和行为。对象克隆可以分为浅克隆和深克隆,浅克隆仅复制对象的引用,而深...