Java:对clone的运用(Shallow Clone and Deep Clone)

一、Shallow Clone

1、现有一个对象 User u1 = new User("张三", "25", "Java开发");此时准备再获得一个 完全独立 且 和u1 完全相同的对象u2.

2、User u2 = u1.clone(); 此时生成了一个新的对象u2,并且具有和u1相同的属性值和方法,且两者不互相影响。

3、注意:以上仅适用于无引用类型。

二、Deep Clone

1、若User类中,含有引用类型属性,则需在User类中另做处理。

public class User implements Cloneable{
    private int age;
    private Car car;

    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return this.age;
    }

    public void setCar(Car car) {
        this.car = car;
    }
    public Car getCar(){
        return this.car;
    }

    // 重写clone
    public Object clone() throws CloneNotSupportedException {
        User userClone=(User)super.clone();
        // 调用引用对象的clone方法
        if(car!=null){
            Car carClone = (Car)car.clone();
            userClone.setCar(carClone);
        }

         return userClone;
     }
}  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值