Java深度拷貝一個物件
阿新 • • 發佈:2019-02-10
深度拷貝一個Java物件,無論這個物件裡面有什麼樣的引數,比如String、陣列、Object型別,或者Object型別裡面又有Object型別的引數。
而且這個被拷貝的物件無須實現Serializable介面。
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /** * 克隆操作類 * @author liguohui * */ public class CloneOper { /** * 深度拷貝 * @param obj * @return */ @SuppressWarnings("unchecked") public static <T> T deepCloneObject(T obj) { try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in =new ObjectInputStream(byteIn); return (T)in.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } }