Java中的克隆方法

文章讲述了Java中对象克隆的概念,包括Cloneable接口的使用以及Object.clone()方法的工作原理。浅克隆是指直接拷贝对象,地址值不变,而深克隆则创建新对象以避免原对象被修改。文章还提到了如何通过重写clone方法实现深克隆,并推荐使用Gson或Jackson工具类来更方便地进行深克隆操作。
摘要由CSDN通过智能技术生成

克隆

Cloneable接口
    如果一个接口没有抽象方法,那么说明,当前接口是一个标记型接口
    cloneable接口表示,一旦实现,当前类对象就可以被克隆,不然不能被克隆


Object.clone()方法
    方法在底层会创建一个对象,    并将原对象数据拷贝

使用步骤
    要重写object类中的clone方法
    让javabean类实现Cloneable接口
    创建原对象并调用clone方法就可以了

浅克隆:    就是直接拷贝,并没有创建新对象,地址值不变,克隆对象一旦被修改,原对象也修改了
深克隆:    就是创建新对象,地址值不同

        如果是基本数据类型,会直接拷贝变量数据类型
        如果是引用数据类型,就会再new一个新对象,将原来对象的数据拷贝来


Object类中的clone方法是浅克隆

如果要深克隆,就要重写clone方法
下面是数组要重写的深克隆
protected Object clone() {
    int[] data =this.data;
    int[] newData=new int[data.length];
    fori{newData[i]=data[i];}
    Object o=(Object)super.clone();
    o.data=newData;
    return o;
}

当然一般是使用工具类来克隆
gson或者jekson工具类就能很好解决这个问题
    举个栗子:
        创建Gson对象            Gson gson=new Gson();
        把对象变成一个字符串        String str=gson.toJson(user);
        再将字符串转换为对象即可        gson.fromJson(str,User.class);
        这样得到的就是深克隆的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值