import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author lichujun
* @date 2018/10/25 11:17
*/
public class Test {
/**
* 對象深度克隆
*/
public static <T extends Serializable> T clone(T obj, Class<T> tClass){
T cloneObj = null;
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos)) {
//寫入字節流
oos.writeObject(obj);
//分配內存,寫入原始對象,生成新對象
try (ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais)) {
//返回生成的新對象
cloneObj = tClass.cast(ois.readObject());
}
}catch (Exception e){
e.printStackTrace();
}
return cloneObj;
}
/**
* List深度克隆
*/
public static <T extends Serializable> List<T> clone(List<T> originList, Class<T> tClass) {
List<T> desc = new ArrayList<>();
originList.forEach(it ->
desc.add(clone(it, tClass))
);
return desc;
}
}
複製代碼