深拷贝和浅拷贝爱你实体
时间: 2025-02-12 15:21:01 浏览: 28
### Java 中深拷贝与浅拷贝的概念
#### 浅拷贝
浅拷贝是指创建一个新的对象,这个新对象会拥有原有对象属性值的一份精确拷贝。如果这些属性是基本数据类型,则其值会被直接复制;如果是引用类型,则只会复制该引用地址而非实际的对象实例[^3]。
这意味着当原对象和新对象都包含对其他对象的引用时,在浅拷贝之后两个对象将继续共享同一个底层对象。因此,任何一方对该共享对象所做的修改都会反映到另一方身上[^4]。
```java
public class ShallowCopyExample implements Cloneable {
public int value;
public Object reference;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
```
#### 深拷贝
相比之下,深拷贝不仅复制了源对象本身,还递归地复制了它所持有的所有层次级别的嵌套对象。这确保了新生成的对象及其内部成员均不依赖于原来的任何一个部分——即两者之间没有任何关联或共同拥有的组件[^5]。
由于这种全面性的克隆操作通常更加耗费资源,尤其是在处理大型复杂的数据结构时尤为明显,但它确实提供了更好的隔离性和安全性[^2]。
```java
import java.io.*;
public class DeepCopyExample implements Serializable {
private static final long serialVersionUID = 1L;
public int value;
public transient Object reference; // 使用transient关键字忽略某些字段
public DeepCopyExample deepClone() throws IOException, ClassNotFoundException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(this);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream in = new ObjectInputStream(bis);
return (DeepCopyExample)in.readObject();
}
}
```
阅读全文
相关推荐


















