欢迎来到 常识词典网 , 一个专业的常识知识学习网站!

[ Ctrl + D 键 ]收藏本站

您所在的位置:首页 > 教育学习 > 为什么

为什么

J-A 中的浅拷贝是什么效果?

分类: 为什么 常识词典 编辑 : 常识 发布 : 10-07

阅读 :267

J-A 中的浅拷贝是什么效果?在java中会把对象中的所有字段都拷贝一遍吗?java的对象相当于C++中的指针,那当调用xx.clone()方法时是把其中所有的对象都拷贝一份,形成新的对象吧。如果想实现深拷贝,是不是得在clone()中调用所有包含对象的clone()并重载这些对象的clone()方法??3 个答案

答案 1:

首先必须知道Java拷贝的用途:Java-是为了得到一个对象,这个对象与-前的对象完全一样,唯一不同就是它们所处的内存地址不相同。对于java中的一切对象(除了基本的数据结构int、float、string等之外)在进行赋值,方法传递的时候,都是一个内存地址的同一个对象! 所谓浅拷贝一般就是就是直接调用对象的clone()方法,这样的拷贝,对于这个对象中的基本数据类型(int、string、float等)的属性,是可以得到完全的拷贝,但是对于这个对象里面的非基本数据类型(对象、集合等)的某些属性,实际上并没有进行-,而只是进行一个赋值操作而已,也就是说-出来的对象与原对象有一部分内容的内存地址是相同的,这在某些情况下会造成出错! 由此提出了深拷贝的概念,即覆写clone()方法,遍历对象中的每一个属性,采取合适的方式进行-即可。例如对于对象中的集合,可以遍历集合,然后构造一个新的集合,重新存储一遍... 更过关于Java-的问题详见Blog:-i.baidu/-wa-l36...

答案 2:

Object需要实现-接口Clonable。在实现clone方法的时候,一般这样做:class MyObject implements Cloneable { Foo member; public void clone(){ MyObject anot-er = new MyObjct(); if (member instanceof Cloneable){ anot-er.member = (Foo)(((Cloneable)member).clone()); } } }}以上仅仅是实例代码。

答案 3:

浅拷贝和深拷贝的区别就是在处理对象引用时,浅拷贝只-引用,而深拷贝会将引用对应的对象-一份。深拷贝一般都对串行化和对象序列化来实现。

下一篇:VO- 形式的呼叫中心的技术特点是什么?风险点在哪里? 下一篇 【方向键 ( → )下一篇】

上一篇:光明会真的存在吗?在-它是怎么样的? 上一篇 【方向键 ( ← )上一篇】