JAVA设计模式(5)创建型-原型模式(深/浅拷贝)
2021/10/10 17:15:37
本文主要是介绍JAVA设计模式(5)创建型-原型模式(深/浅拷贝),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原型模式其实java Object中已经提供了一个Clone( )方法,平时很少用到,最近读Retrofit源码时候看到有这种使用方式。
深浅拷贝的区别:
浅拷贝是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。
深拷贝是在引用方面不同,深拷贝就是创建一个新的和原始字段的内容相同的字段,是两个一样大的数据段,所以两者的引用是不同的,之后的新对象中的引用型字段发生改变,不会引起原始对象中的字段发生改变
//author: V: jbossjf public class Mail implements Cloneable { ... ... ... // 进行浅拷贝 @Override protected Mail clone() throws CloneNotSupportedException { Mail mail = (Mail) super.clone(); return mail; } }
package ShallowCopy; import java.util.ArrayList; /** * 拷贝 原来 list 进行操作,原来的list中元素同样会增加 1.前拷贝 只拷贝基础数据类型 2.深拷贝,拷贝所有,需要手动进行操作 * * @author V: jbossjf * */ public class Client { public ArrayList<String> getShallowCopyArrayList() { return shallowCopyArrayList; } public void setShallowCopyArrayList(ArrayList<String> shallowCopyArrayList) { this.shallowCopyArrayList = shallowCopyArrayList; } ArrayList<String> shallowCopyArrayList = new ArrayList<String>(); public static void main(String[] args) { ShallowOne shallowOne = new ShallowOne(); ArrayList<String> strings = shallowOne.getShallowCopyArrayList(); strings.add("张三"); //浅拷贝 ArrayList<String> cloneObject = (ArrayList<String>) strings.clone(); cloneObject.add("李四"); System.out.println(cloneObject.toString()); //深拷贝 this.shallowCopyArrayList = (ArrayList<String>) this.shallowCopyArrayList .clone(); } }
这篇关于JAVA设计模式(5)创建型-原型模式(深/浅拷贝)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求