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();
      }
  • 相关阅读:
    htop命令使用详解
    三月江南
    linux下文本三剑客之sed
    linux下五种查找命令
    Spring MVC 全局异常处理&文件上传
    About Spring MVC
    JSP
    java多线程
    Java中map接口 遍历map
    log4j
  • 原文地址:https://www.cnblogs.com/yrjns/p/12542394.html
Copyright © 2011-2022 走看看