java deep copy

//deep copy
1、可以对每个成员变量赋值的方式重新将对象的成员值指向新的地址值(比如string),不能整个对象一起赋值(=),这样是引用了对象的地址值,修改应用对象时,被引用的也修改了

2、 使用工具类 BeanUtils.copyProperties(pifuList1.get(i),bpStation);
List<BpStation> pifuList = new ArrayList<>();
for (int i = 0; i < pifuList1.size(); i++) {
BpStation bpStation = new BpStation();
BeanUtils.copyProperties(pifuList1.get(i),bpStation);
pifuList.add(bpStation);
}



3、使用序列化 方法:(如:List<BpStation> pifuList = deepCopy(pifuList1)),但序列化有一个前提就是,序列化类必须实现 class<T> implements Serializable 接口
private <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(src);

ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
@SuppressWarnings("unchecked")
List<T> dest = (List<T>) in.readObject();
return dest;

}
posted @ 2020-03-03 13:01  my——master  阅读(503)  评论(0编辑  收藏  举报