Java中的對象復制分為淺復制和深復制兩種方式。簡單來說,淺復制只是復制了對象的引用,也就是新對象和原對象的數據共用同一塊內存,而深復制則是在堆上重新創建一個對象,并且完整地復制原對象的所有數據。在某些情況下,需要對Java對象進行深度復制操作,避免對象關聯和引用的錯誤操作,提高程序的穩定性。
public class Person implements Cloneable { private String name; private int age; private Address address; public Person(String name, int age, Address address) { this.name = name; this.age = age; this.address = address; } public Person clone() throws CloneNotSupportedException { Person cloned = (Person) super.clone(); cloned.address = new Address(address.getProvince(), address.getCity()); return cloned; } }
上述代碼是一個Person類,包含了姓名、年齡和地址信息。為了實現深度復制,需要使用clone()函數,而且Person類必須實現Cloneable接口。注意,clone()函數必須調用父類的方法,否則只能進行淺復制。在深度復制的過程中,需要重新創建Address對象,并把原對象的屬性值傳遞給新創建的Address對象,保證新對象和原對象不受影響。
public class Address { private String province; private String city; public Address(String province, String city) { this.province = province; this.city = city; } public String getProvince() { return province; } public String getCity() { return city; } }
另外,上述代碼中也有一個Address類,只包含了省份和城市信息,可以根據需要對Address對象進行深淺復制。
總之,在進行Java對象的復制時,應當根據實際需要考慮使用深度復制或淺復制,以避免程序錯誤或異常情況的發生。
下一篇oracle .用法