zoukankan      html  css  js  c++  java
  • 深拷贝

    深拷贝:在浅拷贝的基础上,引用变量也进行了clone,并指向clone产生的新对象
    浅拷贝:被复制对象的所有值属性都含有与原来对象的相同,但是对象引用属性仍然指向原来的对象

    浅拷贝

    Cloneable 

    • 没有public object clone。不知道他搞什么飞机。继承接口还不是public的。要自己调用object.clone.
    • 是浅拷贝,如果有对象数组,还是指针引用
    public Object clone() throws CloneNotSupportedException {
        Employee employee_cloned = (Employee) super.clone();
        employee_cloned.car_cloned = car.clone();
        return employee_cloned;
      }

    深拷贝

    • fastJosn
    public static<T> T convert(Object src, Class<T> clazz) {
        String json =JSON.toJSONString(src);
        return  JSON.parseObject(json, clazz);
    }
    • SerializationUtils.clone
    • io
      public static <T extends Serializable> T clone(T obj) {
          T cloneObj = null;
          try {
            //写入字节流
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ObjectOutputStream obs = new ObjectOutputStream(out);
            obs.writeObject(obj);
            obs.close();
      
            //分配内存,写入原始对象,生成新对象
            ByteArrayInputStream ios = new ByteArrayInputStream(out.toByteArray());
            ObjectInputStream ois = new ObjectInputStream(ios);
            //返回生成的新对象
            cloneObj = (T) ois.readObject();
            ois.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
          return cloneObj;
        }

    clone+beanCom实现深拷贝

    对象拷贝之Apache BeanUtils、Spring的BeanUtils、Mapstruct、BeanCopier、PropertieyUtils对比(深拷贝)

    Java 浅拷贝和深拷贝的理解和实现方式

  • 相关阅读:
    原型设计作业
    案例分析作业
    编程作业
    阅读任务
    自我介绍
    5 20210420-1 团队作业1—团队展示
    3 20210405-1 案例分析作业
    阅读任务
    自我介绍
    原型设计
  • 原文地址:https://www.cnblogs.com/edda/p/14519717.html
Copyright © 2011-2022 走看看