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();
      }
  • 相关阅读:
    SQL server 数据库安装
    jmeter接口测试
    jmeter测试之-脚本制作
    HTTP协议
    计算机原理
    Ubuntu 14.04 搭建 LNMP
    pycharm使用技巧
    hihoCoder #1867 GCD
    Mail.Ru Cup 2018 Round 2 Problem C Lucky Days
    C++ Essentials 之 lower_bound 和 upper_bound 的比较函数格式不同
  • 原文地址:https://www.cnblogs.com/yrjns/p/12542394.html
Copyright © 2011-2022 走看看