java中的对象复制有两种方法,可以简略的称为浅克隆和深克隆 浅克隆:调用object的clone接口实现克隆,之所以称为浅克隆,是因为在复制的过程中将对象的成员变量中的基本数据类型直接复制,但是对于引用数据类型只是将复制对象成员变量的引用传递过去,并没有对于新对象生成新的成员变量,需要注意的地方....
分类:
编程语言 时间:
2015-06-30 23:12:44
阅读次数:
176
在程序开发中如果已经存在一个对象A,现在需要一个与A对象完全相同的对象B,并对B对象的属性值进行修改,但是A对象原有的属性值不能改变。这是,如果使用Java提供的对象赋值语句,修改B对象的属性值后,A对象的属性值也将被修改。那么此时就应该想到要用java的clone方法去实现。
此时会遇到两种情况:第一种情况是,该对象中所有属性都是基本类型没有引用类型,这时就可以只重写Cloneable...
分类:
编程语言 时间:
2015-05-11 09:04:13
阅读次数:
134
这里面涉及到两个类,一个是person类,一个是测试类test
首先我们说到的是浅克隆,对某个对象实施Clone时对其是一无所知的,它仅仅是简单地执行域对域的copy,如果是基本数据类型(int,float,char等)到没什么问题,基本遇上如string,Integer等不可变对象的时候也没有什么问题,但是如果遇上了date这个可变对象,或者是自己定义的可变对象,他只是简单的复制一些引...
分类:
编程语言 时间:
2015-05-07 10:30:36
阅读次数:
137
有些时候,我们需要对创建一个和已有对象A完全相同的新对象B,但是这个B不是A的引用,即A和B是两个完全独立的对象,虽然他们的属性相同,修改A的任何属性都不会对B产生影响,这个时候就要用到clone啦clone有两种:1深克隆:对克隆对象中所有的引用属性对象都进行克隆。2浅克隆:仅克隆对象的基本类.....
分类:
编程语言 时间:
2015-04-27 19:47:32
阅读次数:
105
一.序列化:
把对象写到流里面的过程是序列化,而把对象从流中读出来的过程叫做反序列化。在java中实现深克隆对象,常常可以先使对象实现Serializable接口,然后把对象写到一个流里面,然后再从流中读取出来,便可以重建对象。
二.序列化实现:
public class Main
{
public static void main(String[] args) throws Exc...
分类:
编程语言 时间:
2015-04-21 16:08:48
阅读次数:
182
一.浅克隆和深克隆的概念:
1).浅克隆:又称为浅复制,被复制的对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换而言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
2).深克隆:又称为深复制,被复制的对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而...
分类:
编程语言 时间:
2015-04-19 16:14:46
阅读次数:
240
克隆,就是复制一个对象的副本,而克隆又分浅克隆和深克隆。浅克隆是指克隆得到的对象基本类型的值改变了,而源对象的值不会变。但如果被克隆对象引用类型的值改变了,那么源对象的值同样会改变,因为引用类型在栈内存中存放的是一个引用地址,被克隆对象后也和源对象的引用地址一样,都是指向同样的内存空间的值。所以在....
分类:
编程语言 时间:
2015-04-06 14:13:00
阅读次数:
200
Mark://实现IClonable接口并重写Clone方法就可以实现深克隆了 #region ICloneable 成员 public object Clone() { MemoryStream ms = new MemoryStre...