java的深拷贝和浅拷贝
2014-10-30 22:32
218 查看
import java.util.*; import java.io.*; class User implements Serializable{ public String name; public int age; public User(String str,int num){ name=str; age=num; } public String toString(){ return "Name:"+name+"\n"+"Age:"+age; } } class Test implements Cloneable,Serializable{ public int height; public User user; public Test(User u,int num){ user=u; height=num; } public String toString(){ return user+"\n"+"Height:"+height; } public Object clone(){ try { return super.clone(); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } } public class ArtTracer{ public static void main(String[] args){ Test obj1=new Test(new User("cjc",25),170); Test obj2=(Test)obj1.clone(); obj1.user.age=30; //Cloneable实现的浅拷贝例子 System.out.println(obj1); System.out.println(obj2); System.out.println("*****************"); //序列化实现的深拷贝 Test obj3=new Test(new User("hxh",24),168); ByteArrayOutputStream bout=new ByteArrayOutputStream(); try { ObjectOutputStream obj=new ObjectOutputStream(bout); obj.writeObject(obj3); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } obj3.user.age=40; try { ObjectInputStream in=new ObjectInputStream(new ByteArrayInputStream(bout.toByteArray())); Test obj4=(Test)in.readObject(); System.out.println(obj3); System.out.println(obj4); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e){ e.printStackTrace(); } } }
相关文章推荐
- java程序得到域名对应的所有IP地址(拷贝)
- java传递是引用的拷贝,既不是引用本身,更不是对象
- 怎样让java 的io 拷贝更加快一些
- JAVA程序保护方案(JAVA加密保护,防止反编译、防拷贝)
- 在java中用jxl拷贝、更新Excel工作薄
- java 一维和二维数组的拷贝问题
- Java实现文件拷贝的4种方法.
- java传递是引用的拷贝,既不是引用本身,更不是对象
- JAVA程序保护方案(防止反编译、防拷贝)
- Java中实现文件拷贝实例
- 通过JAVA的Serialization机制进行对象的拷贝
- java中的文件拷贝,移动
- 用java实现文件的拷贝
- JAVA 程序中如何拷贝一个目录下的文件及子目录到另一个目录,如何获取系统环境变量等...
- 如何用java拷贝本地文件夹
- 如何用java拷贝本地文件夹
- 一个Java版的目录拷贝程序
- Java实现文件拷贝(包括文件夹下的子文件夹和其中的文件)
- java递归实现文件的删除和拷贝
- Java实现分类文件拷贝1