最近在看大话设计模式,其实中的原型模式涉及到了浅复制和深复制:
这是我总结的图:
浅复制复制的是对象的引用,所以修改复制后的 stu2,也就是修改被复制对象 stu。
深复制所做的其实是重新 new 一个对象,跟原对象类型一致之外没有别的关系,所以操作 stu3 不会对 stu 有影响。
看代码:
----------------------我是分割线 2017/09/27-------------------------------
今天在看阿里的 java 开发规范终极版,还是有颇多收获的,看到其中的 clone,查阅资料和实践之后,是自己理解错了
先上结论:Object 默认的 clone 是浅复制,上面的 stu3 虽然引用不一致了,但是在查看 stu3 和 stu 的 name 属性之后,发现两者的 hashCode 一致,说明 Object 的默认 clone 并不会复制对象中的引用属性,即应该是浅复制。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于