深拷贝与浅拷贝主要的不同是对于引用变量的拷贝,浅拷贝的引用变量不仅仅是拷贝一个引用(地址).引用变量的成员也一样深拷贝。废话少说下面是两个拷贝的例子
1.浅拷贝
1 package com.LightCopy; 2 3 public class Professor implements Cloneable{ 4 private String name; 5 private int age; 6 7 public String getName() { 8 return name; 9 } 10 11 public void setName(String name) { 12 this.name = name; 13 } 14 15 public int getAge() { 16 return age; 17 } 18 19 public void setAge(int age) { 20 this.age = age; 21 } 22 23 public Professor(String name, int age) { 24 this.name = name; 25 this.age = age; 26 } 27 28 @Override 29 public Object clone() { 30 Professor o=null; 31 try 32 { 33 o=(Professor) super.clone(); 34 } 35 catch(CloneNotSupportedException e) 36 { 37 e.printStackTrace(); 38 } 39 40 return o; 41 } 42 43 }
2.深拷贝
1 package com.DeepCopy; 2 3 import com.LightCopy.Professor; 4 5 public class Student implements Cloneable { 6 private String name; 7 private int age; 8 private Professor pro; 9 public Professor getPro() { 10 return pro; 11 } 12 13 public void setPro(Professor pro) { 14 this.pro = pro; 15 } 16 17 public Student(String name, int age,Professor pro) { 18 this.name = name; 19 this.age = age; 20 this.pro=pro; 21 } 22 23 public String getName() { 24 return name; 25 } 26 27 public void setName(String name) { 28 this.name = name; 29 } 30 31 public int getAge() { 32 return age; 33 } 34 35 public void setAge(int age) { 36 this.age = age; 37 } 38 39 @Override 40 public Object clone() { 41 Student obj = null; 42 try { 43 obj = (Student) super.clone(); 44 } catch (CloneNotSupportedException ex) { 45 ex.printStackTrace(); 46 } 47 obj.pro=(Professor)pro.clone(); 48 return obj; 49 } 50 }
相关推荐
首先我们看看浅拷贝和深拷贝的定义 浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制 深拷贝:对象,对象内部的引用均复制 为了更好的理解它们的区别我们假设有一个对象A,它包含...
主要介绍了 java 深拷贝与浅拷贝机制详解的相关资料,需要的朋友可以参考下
Java关于深拷贝(深复制)和浅拷贝(浅复制)比较通俗易懂的简单说明及示例代码...
本文主要介绍java 的深拷贝和浅拷贝,这里通过实例代码对深拷贝和浅拷贝做了详细的比较,希望能帮到有需要的小伙伴
今天小编就为大家分享一篇关于Java Clone深拷贝与浅拷贝的两种实现方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
本文将会深入的探讨一下在拷贝对象中会出现的浅拷贝和深拷贝的情况。 拷贝接口 java中所有的对象都是继承自java.lang.Object。Object对象中提供了一个clone方法,来供我们对java对象进行拷贝。 protected native ...
主要介绍了Java中的深拷贝(深复制)和浅拷贝(浅复制)介绍,需要的朋友可以参考下
Java 对象拷贝是为对象赋值的一种方式,简单来说就是创建一个和原对象相同的对象,新创建的对象是原对象的一个副本,面试官贼拉喜欢在面试的时候问一问你浅拷贝和深拷贝的原理。因为它涉及到对象的引用关系,涉及到 ...
java对象的深拷贝和浅拷贝[归类].pdf
java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...
Java 对象拷贝是为对象赋值的一种方式,简单来说就是创建一个和原对象相同的对象,新创建的对象是原对象的一个`副本`,面试官贼拉喜欢在面试的时候问一问你浅拷贝和深拷贝的原理。因为它涉及到对象的引用关系,涉及...
java深复制浅复制的实现附源代码,并实现java类之间的多对多联系。
对象拷贝(Object Copy)就是将一个对象的属性拷贝到另一个有着相同类类型的对象中去。在程序中拷贝对象是很常见的,主要...Java中有三种类型的对象拷贝:浅拷贝(Shallow Copy)、深拷贝(Deep Copy)、延迟拷贝(Lazy Copy)
变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) 【变量-对象-引用】 在Python中一切都是对象,比如说:3, 3.14, ‘Hello’, [1,2,3,4],{‘a’:1}…… 甚至连type其本身都是对象,type对象 Python...
浅拷贝(浅复制、浅克隆)、深拷贝(深复制、深克隆)实战工程,IDEA搭建
android 浅复制和深复制-Java Generic Deep Copy 篇
本文实例讲述了javascript二维数组和对象的深拷贝与浅拷贝。分享给大家供大家参考,具体如下: 这篇文章主要为大家详细介绍了js实现数组和对象的深浅拷贝, 1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新...
NULL 博文链接:https://lvwenwen.iteye.com/blog/1495707
主要介绍了Java中实现深拷贝的两种方式—clone() & Serialized,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧