zoukankan      html  css  js  c++  java
  • 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;
        }
    
    }

     

  • 相关阅读:
    Java知识汇总第二天
    jvm学习笔记
    java知识汇总的第一天
    全链路压测流量模型
    FunTester测试框架Redis性能测试实践
    FunTester抄代码之路
    Jira API的踩坑记
    把工作讲给家人听
    颇具年代感的《JMeter中文操作手册》
    FunTester框架Redis压测预备
  • 原文地址:https://www.cnblogs.com/cat520/p/13118275.html
Copyright © 2011-2022 走看看