博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度拷贝
阅读量:6257 次
发布时间:2019-06-22

本文共 1594 字,大约阅读时间需要 5 分钟。

hot3.png

一、参考文献

1.1 https://blog.csdn.net/forwujinwei/article/details/79915872

1.2 

二、深度拷贝实现方式1

2.1 通过序列化实现深拷贝

2.1.1 注意事项

2.1.1.1 用此方法写深度拷贝的类需要实现Serializable, Cloneable 接口

2.1.1.2 字段引用的对象要实现Serializable

public class Cat implements Serializable, Cloneable {    private String name;    private String color;    private Dog friend;    public Cat deepClone() throws IOException, ClassNotFoundException {        //将对象写入流中        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);        objectOutputStream.writeObject(this);        //从流中取出        ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());        ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);        return (Cat) objectInputStream.readObject();    }}

2.2 通过Jackson实现

2.2.1 性能不清楚,但是这个方式比较方便

ObjectMapper mapper = new ObjectMapper(); String catString = mapper.writeValueAsString(cat); Cat catCopy = mapper.readValue(catString, Cat.class);

工具类

public static 
T deepClone(T obj) { try { String s = mapper.writeValueAsString(obj); T t = mapper.readValue(s, (Class
) obj.getClass()); return t; } catch (Exception e) { log.error("deepClone error{}", e); } return null; }//使用Cat catCopy = deepClone(cat);

2.3 commons-beanutils工具类(推荐此方法)

commons-beanutils
commons-beanutils
1.9.3

 

转载于:https://my.oschina.net/Cubicluo/blog/3018845

你可能感兴趣的文章
获取页面中所有dropdownlist类型控件
查看>>
读《淘宝数据魔方技术架构解析》有感
查看>>
[转载]如何破解Excel VBA密码
查看>>
【BZOJ】2563: 阿狸和桃子的游戏
查看>>
redis 中文字符显示
查看>>
顺序图【6】--☆☆
查看>>
Docker Swarm 让你事半功倍
查看>>
javaScript事件(四)event的公共成员(属性和方法)
查看>>
An easy to use android color picker library
查看>>
Oracle SID爆破工具SidGuess
查看>>
批处理常用命令总结2
查看>>
Android -- 自定义View小Demo,绘制钟表时间(一)
查看>>
信息检索Reading List
查看>>
自动精简配置&重复数据删除核心技术点及其经济效应探究
查看>>
cncert网络安全周报35期 境内被植入后门的政府网站112个 环比上涨24.4%
查看>>
物联网到底是不是泡沫,且看英特尔交出的答案
查看>>
IPv6太落后了:中国加速服务器援建
查看>>
物理引擎中velocity的单位是个什么鬼?
查看>>
oracle的drop命令
查看>>
设计与梳理企业二级流程的路线方法
查看>>