• java深拷贝与浅拷贝


    • clone方法用于对象的克隆,一般想要克隆出的对象是独立的(与原有的对象是分开的)

    • 深拷贝指的是该对象的成员变量(如果是可变引用)都应该克隆一份,浅拷贝指的是成员变量没有被克隆一份

    clone用法:

    那么我们如何克隆对象呢?无论是浅拷贝还是深拷贝都是这两步:

    1. 克隆的对象要实现Cloneable接口

    2. 重写clone方法,最好修饰成public

    浅拷贝:仅仅拷贝了Person对象,而date没有拷贝!

    public class Person implements Cloneable {
    
        // 可变的成员变量
        private Date date;
    
        @Override
        public Object clone() throws CloneNotSupportedException {
    
            return super.clone();
        }
    
    }

    深拷贝:不仅拷贝了Person对象,也拷贝了date成员变量!

    public class Person implements Cloneable {
    
        // 可变的成员变量
        private Date date;
    
        @Override
        public Object clone() throws CloneNotSupportedException {
            // (浅)拷贝Person对象
            Person person = (Person) super.clone();
            // 将可变的成员变量也拷贝
            person.date = (Date) date.clone();
            // 返回拷贝的对象
            return person;
        }
    
    }

     

  • 相关阅读:
    Iframe 自适应高度并实时监控高度变化的js代码
    asp.net下载文件几种方式
    C# 使用ffmpeg视频截图
    C# 读取Excel和DBF文件
    C# 多线程下载
    C# http get与post请求方法
    socket实例
    C# 汉字转为拼音
    读取Excel中数据
    【BZOJ2238】Mst 最小生成树+LCA+堆
  • 原文地址:https://www.cnblogs.com/cat520/p/13118275.html
Copyright © 2020-2023  润新知