Java 浅拷贝对象:以 OdmShipmentOrderItem 为例
在 Java 中,浅拷贝是指创建一个新对象,然后将原始对象的字段值复制给新对象的字段,但对于引用类型的字段,只复制引用而不复制对象本身。因此,新旧对象共享同一个引用类型的字段。
要进行浅拷贝,可以通过实现 Cloneable 接口并重写 clone() 方法来实现。以下是一个示例:
public class OdmShipmentOrderItem implements Cloneable {
private String name;
private int quantity;
public OdmShipmentOrderItem(String name, int quantity) {
this.name = name;
this.quantity = quantity;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) {
OdmShipmentOrderItem original = new OdmShipmentOrderItem("item1", 10);
try {
OdmShipmentOrderItem copied = (OdmShipmentOrderItem) original.clone();
System.out.println("Original: " + original);
System.out.println("Copied: " + copied);
System.out.println("Are they the same object? " + (original == copied));
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
@Override
public String toString() {
return "OdmShipmentOrderItem{" +
"name='" + name + "'" +
", quantity=" + quantity +
'}';
}
}
在上述示例中,OdmShipmentOrderItem 类实现了 Cloneable 接口,并重写了 clone() 方法。在 main 方法中,我们创建了一个原始对象 original,并通过 clone() 方法创建了一个浅拷贝的对象 copied。然后,我们打印了原始对象和拷贝对象的信息,并检查它们是否为同一个对象。
请注意,在使用浅拷贝时,如果原始对象的引用类型字段发生变化,拷贝对象也会受到影响。因此,浅拷贝并不适用于包含可变引用类型字段的对象。如果需要创建一个完全独立的对象副本,应使用深拷贝。
原文地址: https://www.cveoy.top/t/topic/mHch 著作权归作者所有。请勿转载和采集!