Java中對象的序列化方式克隆詳解。本站提示廣大學習愛好者:(Java中對象的序列化方式克隆詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中對象的序列化方式克隆詳解正文
Java 序列化技術可以使你將一個對象的形態寫入一個Byte 流裡,並且可以從其它中央把該Byte 流裡的數據讀出來,重新結構一個相反的對象。
簡述:
用字節流的方式,復制Java對象
代碼:
流克隆復制函數
public static Object deepClone(Object obj){ if(obj == null){ return null; } try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); Object cloneObj = null; ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); cloneObj = in.readObject(); return cloneObj; } catch (Exception e) { throw new RuntimeException(e); } }
ObjectClone.java
package test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class ObjectClone { /** * 測試對象 */ private static class Person implements Serializable { private String name; private int age; Person(String name, int age){ this.name = name; this.age = age; } @Override public String toString() { return String.format("name: %s\nage: %s", name, age); } } /** * 測試函數 */ public static void main(String[] args) { Person person = new Person("Henry", 22); Person newPerson = (Person)ObjectClone.deepClone(person); System.out.println(newPerson); } /** * 工具類 * * @param obj * @return */ public static Object deepClone(Object obj){ if(obj == null){ return null; } try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); Object cloneObj = null; ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); cloneObj = in.readObject(); return cloneObj; } catch (Exception e) { throw new RuntimeException(e); } } }
測試後果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或許任務能帶來一定的協助,假如有疑問大家可以留言交流。