美文网首页
Object类中的clone()方法是浅拷贝

Object类中的clone()方法是浅拷贝

作者: fanderboy | 来源:发表于2020-01-11 16:26 被阅读0次

深拷贝和浅拷贝的概念:
官方说法:当一个对象被拷贝时,拷贝得到的对象内部的引用对象和原对象内部的引用对象地址相等,这是浅拷贝。反之,是深拷贝。
说人话:当对象中含有可变的引用类型属性时,在复制得到的新对象对该引用类型属性内容进行修改,原始对象响应的属性内容也会发生变化,这就是"浅拷贝"的现象。
浅拷贝案例:

@Getter
@Setter
@ToString
public class Person implements Cloneable {

    private String name;
    private Address address;

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
@Getter
@Setter
@ToString
public class Address {
    private String province;
    private String street;
}

测试:

  public static void main(String[] args) throws CloneNotSupportedException {
        Person person = new Person();
        person.setName("小明");
        Address address = new Address();
        address.setProvince("河南");
        address.setStreet("中州大道");
        person.setAddress(address);
        Person clonePerson = (Person) person.clone();

        System.out.println(person);
        System.out.println(clonePerson);

        clonePerson.setName("小香");
        address = clonePerson.getAddress();
        address.setStreet("王城大道");

        System.out.println(person);
        System.out.println(clonePerson);
    }

运行结果:

Person(name=小明, address=Address(province=河南, street=中州大道))
Person(name=小明, address=Address(province=河南, street=中州大道))
Person(name=小明, address=Address(province=河南, street=王城大道))
Person(name=小香, address=Address(province=河南, street=王城大道))

相关文章

  • 面试:Object 方法与原理

    Object 方法与原理 1. clone 方法 clone 方法的用法是对象的浅拷贝和深拷贝,clone是浅拷贝...

  • Java复制

    概述 Java复制分为三类:直接赋值、浅拷贝和深拷贝。 Java复制是基于Object的clone()方法。 由此...

  • Object类中的clone()方法是浅拷贝

    深拷贝和浅拷贝的概念:官方说法:当一个对象被拷贝时,拷贝得到的对象内部的引用对象和原对象内部的引用对象地址相等,这...

  • Java | 对象克隆

    浅拷贝 默认的克隆操作,也就是Object的 clone 方法是浅拷贝,浅拷贝只会拷贝对象属性的值,而不会拷贝对象...

  • Object类中的clone()方法是深拷贝还是浅拷贝?

    今天有人给我发来一道题,说的是clone()是深拷贝还是浅拷贝,两眼懵比。既然不懂,那就写代码做个记录吧。 首先,...

  • java clone问题

    在java中,如果需要有拷贝问题,都会使用到父类Object的Clone方法,能够为我们提供对象的拷贝方法,在使用...

  • Java中Object类和String类的常用方法

    Object类的常用方法 - clone() ​ Object类中的clone()方法用来复制自定义类的实例对...

  • java之深拷贝和浅拷贝

    一、Object类的clone方法 1、说明 Object类的clone方法是native方法 什么是Native...

  • 数组与对象的拷贝【Java拾遗】

    一、数组的拷贝主要有以下几种方式。 Object.clone() 该方法继承自Object类,数组元素为基础数据类...

  • Cloneable 接口

    浅拷贝(shallow clone)和深拷贝(deep clone) 浅拷贝是指拷贝对象时仅仅拷贝对象本身和对象中...

网友评论

      本文标题:Object类中的clone()方法是浅拷贝

      本文链接:https://www.haomeiwen.com/subject/pqfbactx.html