Java 对象克隆(Object Cloning)详解

Java 对象克隆(Object Cloning)详解

对象克隆是指创建一个对象的精确副本,Java 提供了两种克隆方式:浅克隆(Shallow Clone)深克隆(Deep Clone)。下面从实现原理、使用场景到注意事项全面解析。


一、克隆的基本概念

1. 为什么要克隆?

  • 需要对象副本时避免修改原始对象
  • 比手动 new 对象并复制属性更高效(尤其复杂对象)
  • 保护性拷贝(Defensive Copy)的重要实现方式

2. 克隆的两种类型

类型 特点
浅克隆 复制基本类型值,引用类型复制地址(共享引用对象)
深克隆 完全独立的新对象,包括所有引用对象也递归克隆

二、实现克隆的步骤

1. 实现 Cloneable 接口

  • Cloneable 是标记接口(无方法),仅表示该类允许克隆
  • 不实现会抛 CloneNotSupportedException

2. 重写 Object.clone()

@Override
protected Object clone() throws CloneNotSupportedException {
   
    return super.clone(); // 调用Object的native方法
}

3. 完整示例(浅克隆)

class Person implements Cloneable {
   
    String name;
    int age;
    Address address; // 引用类型

    @Override
    public Person clone() throws CloneNotSupportedException {
   
        return (Person) super.clone(); // 浅克隆
    }
}
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步行cgn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值