您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页谨慎地覆盖clone

谨慎地覆盖clone

来源:二三娱乐
什么是clone?

clone实际上就是复制。所谓的复制指的是先创建一个对象,然后将源对象中的数据导入到新创建的对象中。

复制对象和复制引用的区别:

我们看到下面一个例子:

public class Person implements Cloneable{
    private String name;
    private int age;
    private boolean sex;

    public Person(String name, int age, boolean sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        Person p = new Person("John", 21, true);
        Person p1 = p;
        Person p2 = (Person) p.clone();
        System.out.println("p: " + p);
        System.out.println("p1: " + p1);
        System.out.println("p2: " + p2);
    }
}
输出结果:
p: clone_demo.Person@1b6d3586
p1: clone_demo.Person@1b6d3586
p2: clone_demo.Person@4554617c

我们可以看到结果:对于复制引用,即对象p1,它所指向的地址和源对象地址是相同的,而对于对象p2,它是通过clone方法获取到一个新的对象地址,和源地址是不同的。可见,复制引用只是将引用指向了源对象地址,而clone方法是真正地克隆了一个对象。

深拷贝与浅拷贝

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务