扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

Java闆嗗悎濡備綍瀹炵幇娣辨嫹璐?

扬州沐宇科技
2024-06-27 19:22:29
Java

鍦↗ava涓紝瀹炵幇娣辨嫹璐濆彲浠ラ€氳繃浠ヤ笅鍑犵鏂瑰紡锛?/p>

  1. 浣跨敤搴忓垪鍖栧拰鍙嶅簭鍒楀寲锛氬皢瀵硅薄搴忓垪鍖栦负瀛楄妭娴侊紝鐒跺悗鍐嶅皢瀛楄妭娴佸弽搴忓垪鍖栦负鏂扮殑瀵硅薄锛岃繖鏍峰氨鑳藉疄鐜版繁鎷疯礉銆傜ず渚嬩唬鐮佸涓嬶細
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 + '}';
        }
    }
}
  1. 浣跨敤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>

扫码添加客服微信