Java深度拷貝物件
阿新 • • 發佈:2019-02-06
今天看到一種java類實現了Serializable介面後物件深拷貝的方法,所以記錄一下型別,T一定要實現Serializable介面。
public static <T> T CloneObj(T t) throws Exception{
Serializable serializable = (Serializable) t;
return SerializationUtil.clone(serializable);
}
public class SerializationUtil { /** * 獲取一個可Serializable物件的深度拷貝 * 替換 SerializationUtils.clone * @param srcObj 源物件 * @return Object 深度拷貝物件 */ public static <T> T clone(T t) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(t); ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray())); return (T)ois.readObject(); } catch (Exception e) { Logger.error(e.getMessage(), e); throw new Exception(e.getMessage(), e); } } }