Java基础 深拷贝浅拷贝
Java基础 深拷贝浅拷贝
- 非基本数据类型 需要new新空间
class Student implements Cloneable{private int id;private String name;private Vector course;public Student(){try{Thread.sleep(1000);System.out.println("Student Constructor called.");}catch (InterruptedException e){e.printStackTrace();}}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public Vector getCourse() {return course;}public void setCourse(Vector course) {this.course = course;}//浅拷贝public Student newInstance(){try{return (Student)this.clone();}catch (CloneNotSupportedException e){e.printStackTrace();}return null;}//深拷贝public Student deepClone(){try{Student cloning = (Student) super.clone();cloning.course = new Vector();return cloning;}catch (CloneNotSupportedException e){e.printStackTrace();}return null;}}public Object clone(){ //覆写clone(),深拷贝 try{ Student cloning = (Student) super.clone(); // 这里不能使用Student cloning = (Student) this.clone()的原因:正在覆写本类的clone()方法,如果再调用本类的函数,即:this.clone(),就相当于无限递归无限死循环了,最终会崩溃的。所以这里:super.clone()。cloning.courses = new Vector(); //关键点:非基本数据类型的空间需要自己新开辟一块儿 return cloning; }catch(CloneNotSupportedException e){ e.printStackTrace(); } return null;
}
参考资料
谨慎覆盖clone
Java中的clone() 深拷贝 浅拷贝
转载于:https://www.cnblogs.com/ironbrady/p/6671860.html
Java基础 深拷贝浅拷贝相关推荐
- Java基础-深拷贝和浅拷贝的区别
深拷贝与浅拷贝 一般来说,拷贝的类型分为 深拷贝与浅拷贝. |-----------------------------| | 深拷贝:引用对象的值等信息,复制一份一样的. | ...
- 深拷贝和浅拷贝的理解-----------【Java基础】
拷贝,在IT界是一个计算机系统的DOS命令,意为"复制",是一个新名词,广泛地应用于IT的各个领域: 拷贝还分深拷贝和浅拷贝:拷贝的对象不同还会导致拷贝方式的不同:拷贝的若是引用数 ...
- 学习Java的深拷贝和浅拷贝
关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象.可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷贝的原理,对于Java中的所谓值传递或者引用 ...
- 【转】JAVA中的浅拷贝和深拷贝
原文网址:http://blog.bd17kaka.net/blog/2013/06/25/java-deep-copy/ JAVA中的浅拷贝和深拷贝(shallow copy and deep co ...
- java:深拷贝与浅拷贝
拷贝的实现: 只有子类实现了Cloneable接口后才可以使用Object类提供的clone方法. protected native Object clone() throws CloneNotSup ...
- java深拷贝和浅拷贝_Java 深拷贝浅拷贝 与 序列化
一.浅拷贝.深拷贝 浅拷贝会对对象中的成员变量进行拷贝:如果是基本类型,拷贝的就是基本类型的值:如果属性是内存地址(引用类型),拷贝的就是内存地址 : 深拷贝,除了基本类型外,引用类型所引用的对象也会 ...
- 叮!您收到一份超值Java基础入门资料!
摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...
- 面经——Java基础
Java基础 ArrayList 和 LinkedList 区别 双亲委派模型以及优点 String是否可以被继承及相关原因 String 和 StringBuffer.StringBuilder 的 ...
- 小猫的java基础知识点汇总(下)
1.线程和进程有什么区别? 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务. 不同的进程使用不同的内存空间,而 ...
最新文章
- 使用Notepad++ 删除非连续的列内容操作实例
- 逃出你的肖申克(四):理智与情感
- 用递归调用法求斐波那契函数_进阶版:面试官问你斐波那契数列的时候不要高兴得太早...
- 实验报告总结_小学四年级数学下册全册知识点总结 ,家有四年级学生的家长收藏...
- Cloud一分钟 |乐视系近亿元资产被查封;快手推出新社区产品,取名“蹦迪”;高通:已终止收购恩智浦的交易...
- 《DSP using MATLAB》Problem 6.16
- day33 UDP、进程
- sublime 常用快捷键
- 串口中断和定时器中断_51单片机中断机制(定时器/计数器)
- java线程间通信 实例_JAVA-初步认识-第十四章-线程间通信-示例
- Nginx源码分析 - Event事件篇 - Epoll事件模块(19)
- MythXinWCF通用宿主绿色版V1.2发布,及服务启动相关说明
- 面试题之请描述一下Java类加载过程
- Qt中其他类调用窗口中的ui控件
- 【Java】解决 java:错误:编码GBK的不可映射字符
- 阿里云共享带宽包和共享流量包的区别,分别应对的场景
- 正方验证码智能识别及教务系统模拟登录
- 返还delegation
- 数据库表数据如何去重
- mysql外键(FK)及其外键关联操作reference
热门文章
- docker从仓库找镜像
- linux环境下用docker安装rabbitmq
- 计算机科学学院陈瑜,浙江大学城市学院计算机与计算科学学院 计算机科学与技术 陈则伦...
- 10个超级好用的快捷键技巧,知道的都是大神!
- 数据库:SQLServer分页查询整理
- 数据结构基础:图结构的学习笔记
- libvirt vnc花屏_centos6.5下VNC花屏解决方法
- freemarker 去掉最后一个逗号_从零开始做一个SLG游戏(六)游戏系统以及配置表...
- python一般学多久可以考试_为何Python适合初学者 一般Python要学习多久
- 计算机c盘隐藏了怎么办,win7怎么隐藏c盘 win7c盘被隐藏了怎么解除