‘壹’ Java 基础知识之 深拷贝与浅拷贝(Cloneable接口、clone方法)
浅拷贝与深拷贝是复制Java对象时的两种方式。基本数据类型会复制出另一份,而引用类型复制的是指针,指向相同的堆内存地址。深拷贝会递归复制对象的所有字段和引用指向的对象,确保新对象与原始对象的独立性。浅拷贝仅复制基本数据类型和引用的指针。Java的`Cloneable`接口与`clone`方法用于实现拷贝,`Cloneable`接口标记类支持`clone`方法的使用。深拷贝实现时需覆写`clone`方法,处理类中每一个引用类型,确保其独立副本的创建。浅拷贝例子中,`Person`类的`clone`方法仅复制了`age`字段,而`name`字段为引用类型,拷贝的是指针。深拷贝例子中,`Person`类的`clone`方法创建了`name`的新副本,确保了新对象与原始对象的独立性。使用`clone`方法复制对象时,需要类实现`Cloneable`接口,否则会抛出`CloneNotSupportedException`异常。然而,`clone`方法的设计存在争议,有人认为将其放在`Cloneable`接口内更为合理。