java的深拷贝和浅拷贝

来源:互联网 发布:大数据时代带来的问题 编辑:程序博客网 时间:2024/06/05 07:27
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 blocke.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 blocke.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 blocke.printStackTrace();} catch (ClassNotFoundException e){e.printStackTrace();}}}

0 0
原创粉丝点击