zoukankan      html  css  js  c++  java
  • 对象的深度克隆

    Object的clone()只是浅克隆,除了基础数据和String类型的不受影响外,其他会受到影响。换句话说,克隆对象时仅仅克隆对象本身(包括对象中的基本变量),而不克隆对象包含的引用指向的对象。

    深度克隆不仅克隆对象本身,而且克隆对象包含的引用指向的所有对象。

    对象的深度克隆原理:将对象序列化后写在输出流里,因为写在流里面的对象是一份拷贝,原对象仍然在JVM里;然后再把输出流转换为输入流,把对象反序列化后写出来!这样就实现了对象的深度克隆,克隆后的两个对象完全独立开来,互不影响。对象的深度克隆其实是利用的对象的序列化和反序列化,所以要进行深度克隆的对象都要实现Serializable接口

    public Object copy() throws IOException, ClassNotFoundException{
       ByteArrayOutputStream bos = new ByteArrayOutputStream();
       ObjectOutputStream oos = new ObjectOutputStream( bos );
       oos.writeObject( this );
       ObjectInputStream ois = new ObjectInputStream( new ByteArrayInputStream( bos.toByteArray() ) );
       return ois.readObject();
      }
  • 相关阅读:
    一个数组找出第k大的数(待补)
    变动二叉树
    判断一个二叉树
    Redis的过期策略和内存淘汰机制
    sql连接详解
    http 请求和格式
    java基础知识
    分页信息
    持续集成之Jenkins自动部署war包到远程服务器
    no-sql数据库之redis
  • 原文地址:https://www.cnblogs.com/yrjns/p/12542394.html
Copyright © 2011-2022 走看看