zoukankan      html  css  js  c++  java
  • java深度复制

    索要克隆的类必须实现:Serializable,Cloneable接口


    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class ColneUtil { private ColneUtil () { throw new AssertionError(); } @SuppressWarnings("unchecked") public static <T extends Serializable> T clone(T obj) throws Exception { ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bout); oos.writeObject(obj); ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bin); return (T) ois.readObject(); // 说明:调用ByteArrayInputStream或ByteArrayOutputStream对象的close方法没有任何意义 // 这两个基于内存的流只要垃圾回收器清理对象就能够释放资源,这一点不同于对外部资源(如文件流)的释放 } }
    • 浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())

    • 深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型)

    一点点学习,一丝丝进步。不懈怠,才不会被时代淘汰
  • 相关阅读:
    【转】GPS网平差
    【转】GPS基线的精化处理
    【转】GLONASS全球卫星导航系统
    【转】伽利略卫星导航定位系统
    【转】国外几款GPS卫星历预报软件
    【转】GPS误差来源
    【转】静态控制测量中的常用术语
    Android开发--FrameLayout的应用
    Android开发--LinearLayout的应用
    Android开发--ScrollView的应用
  • 原文地址:https://www.cnblogs.com/wangbiaohistory/p/14615893.html
Copyright © 2011-2022 走看看