色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Java淺拷貝和深拷貝怎么實現

林玟書1年前7瀏覽0評論

Java中的拷貝分為淺拷貝和深拷貝兩種,它們的實現方式各不相同。

關于淺拷貝,它只會拷貝對象的基本數據類型以及引用類型的地址,而不是引用類型的對象本身。這意味著在進行對象操作時,可能會影響到原始對象。

// 淺拷貝實現代碼
public class Person implements Cloneable {
private String name;
private Listhobbies;
public Person(String name, Listhobbies) {
this.name = name;
this.hobbies = hobbies;
}
public Person clone() throws CloneNotSupportedException {
return (Person) super.clone();
}
}
// 淺拷貝調用
Person p1 = new Person("Tom", new ArrayList<>());
Person p2 = p1.clone();
p2.getHobbies().add("swimming");
System.out.println(p1.getHobbies()); // [swimming]

深拷貝就不存在上面提到的問題,它會將引用類型的對象也進行復制,這樣操作復制對象時就不會影響到原始對象了。

// 深拷貝實現代碼
public class Person implements Cloneable {
private String name;
private Listhobbies;
public Person(String name, Listhobbies) {
this.name = name;
this.hobbies = hobbies;
}
public Person clone() throws CloneNotSupportedException {
Person person = (Person) super.clone();
person.hobbies = new ArrayList<>(hobbies);
return person;
}
}
// 深拷貝調用
Person p1 = new Person("Tom", new ArrayList<>());
Person p2 = p1.clone();
p2.getHobbies().add("swimming");
System.out.println(p1.getHobbies()); // []

總之,在Java中實現淺拷貝和深拷貝都需要實現Cloneable接口,并重寫clone()方法。深拷貝的關鍵在于需要將引用類型的對象也進行復制,而這一點淺拷貝是做不到的。