Java闆嗗悎濡備綍瀹炵幇娣辨嫹璐?
鍦↗ava涓紝瀹炵幇娣辨嫹璐濆彲浠ラ€氳繃浠ヤ笅鍑犵鏂瑰紡锛?/p>
- 浣跨敤搴忓垪鍖栧拰鍙嶅簭鍒楀寲锛氬皢瀵硅薄搴忓垪鍖栦负瀛楄妭娴侊紝鐒跺悗鍐嶅皢瀛楄妭娴佸弽搴忓垪鍖栦负鏂扮殑瀵硅薄锛岃繖鏍峰氨鑳藉疄鐜版繁鎷疯礉銆傜ず渚嬩唬鐮佸涓嬶細
import java.io.*;
public class DeepCopyExample {
public static void main(String[] args) throws Exception {
// 鍒涘缓鍘熷瀵硅薄
Person person = new Person("Alice", 25);
// 娣辨嫹璐?/span>
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(person);
oos.close();
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
Person copiedPerson = (Person) ois.readObject();
ois.close();
// 杈撳嚭涓や釜瀵硅薄鐨勪俊鎭紝楠岃瘉鏄惁鏄繁鎷疯礉
System.out.println("鍘熷瀵硅薄锛?quot; + person);
System.out.println("鎷疯礉瀵硅薄锛?quot; + copiedPerson);
}
static class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + '}';
}
}
}
- 浣跨敤Cloneable鎺ュ彛鍜岄噸鍐檆lone()鏂规硶锛氬疄鐜癈loneable鎺ュ彛锛屽苟閲嶅啓clone()鏂规硶锛屽湪clone()鏂规硶涓皟鐢╯uper.clone()鑾峰彇瀵硅薄鐨勬祬鎷疯礉锛岀劧鍚庡啀瀵瑰紩鐢ㄧ被鍨嬬殑灞炴€ц繘琛屾繁鎷疯礉銆傜ず渚嬩唬鐮佸涓嬶細
public class DeepCopyExample {
public static void main(String[] args) throws CloneNotSupportedException {
// 鍒涘缓鍘熷瀵硅薄
Person person = new Person("Alice", 25);
// 娣辨嫹璐?/span>
Person copiedPerson = (Person) person.clone();
// 杈撳嚭涓や釜瀵硅薄鐨勪俊鎭紝楠岃瘉鏄惁鏄繁鎷疯礉
System.out.println("鍘熷瀵硅薄锛?quot; + person);
System.out.println("鎷疯礉瀵硅薄锛?quot; + copiedPerson);
}
static class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
protected Object clone() throws CloneNotSupportedException {
Person clonedPerson = (Person) super.clone();
return clonedPerson;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + '}';
}
}
}
浠ヤ笂鏄袱绉嶅父瑙佺殑瀹炵幇娣辨嫹璐濈殑鏂瑰紡锛屽紑鍙戣€呭彲浠ユ牴鎹疄闄呮儏鍐甸€夋嫨鍚堥€傜殑鏂瑰紡鏉ュ疄鐜版繁鎷疯礉銆?/p>