欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java clone和copy

錢琪琛1年前7瀏覽0評論

在Java編程中,經常需要復制一個對象。Java提供了兩種方法來實現這個目的,分別是:clone()方法和copy構造函數。

clone方法是Object類的一個方法,通過調用該方法可以克隆一個對象,得到與原對象完全相同的一個新對象。

public class Person implements Cloneable {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public Person clone() {
try {
return (Person) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
}

在代碼中,通過實現Cloneable接口,并重寫clone()方法,就可以實現克隆功能。然后在需要創建新對象的地方調用該方法即可。

Person p1 = new Person(18, "Tom");
Person p2 = p1.clone();

另一種方法是使用copy構造函數,這是通過在構造函數中傳入一個同類型的對象,將該對象的狀態復制給當前對象完成的。

public class Person {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public Person(Person other) {
this.age = other.age;
this.name = other.name;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
}

在代碼中,通過重載構造函數,就可以實現復制功能,并且使用起來更加簡單。

Person p1 = new Person(18, "Tom");
Person p2 = new Person(p1);

兩種方法各有優缺點,clone方法可以實現深度克隆,將引用類型的對象也復制,但是需要實現Cloneable接口,并且存在克隆拋出異常的風險。而copy構造函數相對簡單,但是只能實現淺復制,需要手動處理引用類型對象的復制。