`
liu_87663663
  • 浏览: 34789 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java对象深度克隆

    博客分类:
  • java
 
阅读更多

java对象深度克隆的方法:

 

Java代码
  1. public static final Object deepClone(Object obj){  

  2.        if(logger.isDebugEnabled()){  

  3.            logger.debug("开始深度克隆对象");  

  4.        }  

  5.        ByteArrayOutputStream bo = null;  

  6.        ObjectOutputStream oo = null;  

  7.        ByteArrayInputStream bi = null;  

  8.        ObjectInputStream oi = null;  

  9.        Object resultObject = null;  

  10.        try {  

  11.            //将对象写到流里  

  12.            if(logger.isDebugEnabled()){  

  13.                logger.debug("将对象写入二进制流");  

  14.            }  

  15.            bo=new ByteArrayOutputStream();  

  16.            oo=new ObjectOutputStream(bo);  

  17.            oo.writeObject(obj);  

  18.            //从流里读出来  

  19.            if(logger.isDebugEnabled()){  

  20.                logger.debug("在二进制流中将对象读出");  

  21.            }  

  22.            bi=new ByteArrayInputStream(bo.toByteArray());  

  23.            oi=new ObjectInputStream(bi);  

  24.              

  25.            resultObject = oi.readObject();  

  26.  

  27.        } catch (IOException e) {  

  28.            // TODO Auto-generated catch block  

  29.            e.printStackTrace();  

  30.        } catch (ClassNotFoundException e) {  

  31.            logger.fatal("没有找到对应的类");  

  32.        } finally{  

  33.            if(logger.isDebugEnabled()){  

  34.                logger.debug("关闭流对象");  

  35.            }  

  36.            try {  

  37.                if(oi != null){  

  38.                        oi.close();  

  39.                    oi = null;  

  40.                }  

  41.                if(bi != null){  

  42.                    bi.close();  

  43.                    bi = null;  

  44.                }  

  45.                if(oo != null){  

  46.                    oo.close();  

  47.                    oo = null;  

  48.                }  

  49.                if(bo != null){  

  50.                    bo.close();  

  51.                    bo = null;  

  52.                }  

  53.            } catch (IOException e) {  

  54.                logger.error("",e);  

  55.            }  

  56.        }  

  57.        return resultObject;  

  58.    }  

     

分享到:
评论

相关推荐

    基于序列化存取实现java对象深度克隆的方法详解

    本篇文章是对序列化存取实现java对象深度克隆的方法进行了详细的分析介绍,需要的朋友参考下

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

    本篇文章是对JAVA对象深度克隆进行了详细的分析介绍,需要的朋友参考下

    java对象复制克隆

    深度复制Java对象实例,复制后对象属性值改变不影响被复制对象,有注释

    java深度克隆

    java深度克隆,可以复制对象,非常好用,谁用谁知道!

    java克隆对象(两种方法)

    java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)

    java 深度克隆的代码实例实战理解

    可以更好的去理解java克隆的运用,尤其在多线程的运用过程中,多个对象进行操作过程中,可以先进行对 对象进行 备份,首先就克隆一份,当多线程对对象操作过程中,与异常情况,可以对对象进行恢复,克隆还其他的用途,学会...

    一行代码实现纯数据json对象的深度克隆实现思路

    今天整理了下资料,分析下为什么一句话可以实现纯数据json对象的深度克隆,感兴趣的朋友可以了解下哦

    Java编程实现对象克隆(复制)代码详解

    主要介绍了Java编程实现对象克隆(复制)代码详解,涉及了克隆的原因,如何实现克隆,克隆的一般步骤,深克隆与浅克隆的介绍等相关内容,具有一定借鉴价值,需要的朋友可以参考下。

    java深度复制源代码

    深度复制,赋值后给新对象赋值不会影响原始对象。

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

    主要介绍了Java利用序列化实现对象深度clone的方法,实例分析了java序列化及对象克隆的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

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

    javascript克隆对象深度介绍

    深度克隆:所有元素或属性均完全克隆,并于原引用类型完全独立,即,在后面修改对象的属性的时候,原对象不会被修改。 代码如下: function cloneObject(obj){ var o = obj.constructor === Array ? [] : {}; for...

    Java中对象的序列化方式克隆详解

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走...这篇文章主要给大家介绍了Java中对象的序列化方式克隆,需要的朋友可以参考借鉴,下面来一起看看吧。

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    java 编程入门思考

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...

    Java初学者入门教学

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...

    java联想(中文)

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...

    JAVA_Thinking in Java

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...

    Thinking in Java简体中文(全)

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...

    Thinking in Java 中文第四版+习题答案

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 其他J/Direct...

Global site tag (gtag.js) - Google Analytics