/**
* 通过序列化方式来处理java深度拷贝的问题,在内存中通过字节流的拷贝来实现,也就是把母
* 对象写到一个字节流中,再从字节流中将其取出来,这样就可以重建一个新对象,该对象与母
* 对象之间不存在引用共享的问题,也就相当于深拷贝了一个新对象,代码如下,当然还有其它方法,
* 在此就先提到序列化实现深度拷贝的问题,
* @author mary
*
*/
//通过序列化实现深度拷贝
class CloneUtils{@SuppressWarnings("unchecked")
public static <T extends Serializable> T clone(T obj){
T cloneObj=null;
try{
//读取对象字节数据
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.close();
//分配内存空间,写入原始对象,生成新对象
ByteArrayInputStream bais=new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois=new ObjectInputStream(bais);
//返回新的对象,并做类型转换
cloneObj=(T)ois.readObject();
ois.close();
}catch(Exception e){
e.printStackTrace();
}
return cloneObj;
}
}
public class TheJava {
public static void main(String s[]){
String b="book";
String a=null;
a=CloneUtils.clone(b);
b="java";
System.out.println("a="+a);
System.out.println("b="+b);
}
}