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基础 深拷贝浅拷贝相关推荐

  1. Java基础-深拷贝和浅拷贝的区别

    深拷贝与浅拷贝 一般来说,拷贝的类型分为 深拷贝与浅拷贝. |-----------------------------| | 深拷贝:引用对象的值等信息,复制一份一样的.             | ...

  2. 深拷贝和浅拷贝的理解-----------【Java基础】

    拷贝,在IT界是一个计算机系统的DOS命令,意为"复制",是一个新名词,广泛地应用于IT的各个领域: 拷贝还分深拷贝和浅拷贝:拷贝的对象不同还会导致拷贝方式的不同:拷贝的若是引用数 ...

  3. 学习Java的深拷贝和浅拷贝

    关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象.可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷贝的原理,对于Java中的所谓值传递或者引用 ...

  4. 【转】JAVA中的浅拷贝和深拷贝

    原文网址:http://blog.bd17kaka.net/blog/2013/06/25/java-deep-copy/ JAVA中的浅拷贝和深拷贝(shallow copy and deep co ...

  5. java:深拷贝与浅拷贝

    拷贝的实现: 只有子类实现了Cloneable接口后才可以使用Object类提供的clone方法. protected native Object clone() throws CloneNotSup ...

  6. java深拷贝和浅拷贝_Java 深拷贝浅拷贝 与 序列化

    一.浅拷贝.深拷贝 浅拷贝会对对象中的成员变量进行拷贝:如果是基本类型,拷贝的就是基本类型的值:如果属性是内存地址(引用类型),拷贝的就是内存地址 : 深拷贝,除了基本类型外,引用类型所引用的对象也会 ...

  7. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  8. 面经——Java基础

    Java基础 ArrayList 和 LinkedList 区别 双亲委派模型以及优点 String是否可以被继承及相关原因 String 和 StringBuffer.StringBuilder 的 ...

  9. 小猫的java基础知识点汇总(下)

    1.线程和进程有什么区别? 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务. 不同的进程使用不同的内存空间,而 ...

最新文章

  1. 使用Notepad++ 删除非连续的列内容操作实例
  2. 逃出你的肖申克(四):理智与情感
  3. 用递归调用法求斐波那契函数_进阶版:面试官问你斐波那契数列的时候不要高兴得太早...
  4. 实验报告总结_小学四年级数学下册全册知识点总结 ,家有四年级学生的家长收藏...
  5. Cloud一分钟 |乐视系近亿元资产被查封;快手推出新社区产品,取名“蹦迪”;高通:已终止收购恩智浦的交易...
  6. 《DSP using MATLAB》Problem 6.16
  7. day33 UDP、进程
  8. sublime 常用快捷键
  9. 串口中断和定时器中断_51单片机中断机制(定时器/计数器)
  10. java线程间通信 实例_JAVA-初步认识-第十四章-线程间通信-示例
  11. Nginx源码分析 - Event事件篇 - Epoll事件模块(19)
  12. MythXinWCF通用宿主绿色版V1.2发布,及服务启动相关说明
  13. 面试题之请描述一下Java类加载过程
  14. Qt中其他类调用窗口中的ui控件
  15. 【Java】解决 java:错误:编码GBK的不可映射字符
  16. 阿里云共享带宽包和共享流量包的区别,分别应对的场景
  17. 正方验证码智能识别及教务系统模拟登录
  18. 返还delegation
  19. 数据库表数据如何去重
  20. mysql外键(FK)及其外键关联操作reference

热门文章

  1. docker从仓库找镜像
  2. linux环境下用docker安装rabbitmq
  3. 计算机科学学院陈瑜,浙江大学城市学院计算机与计算科学学院 计算机科学与技术 陈则伦...
  4. 10个超级好用的快捷键技巧,知道的都是大神!
  5. 数据库:SQLServer分页查询整理
  6. 数据结构基础:图结构的学习笔记
  7. libvirt vnc花屏_centos6.5下VNC花屏解决方法
  8. freemarker 去掉最后一个逗号_从零开始做一个SLG游戏(六)游戏系统以及配置表...
  9. python一般学多久可以考试_为何Python适合初学者 一般Python要学习多久
  10. 计算机c盘隐藏了怎么办,win7怎么隐藏c盘 win7c盘被隐藏了怎么解除