来源:胖子 @胖子
import java.io.*;
public class ObjectCopy {
static class Person implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public static void main(String[] args) throws Exception{
Person p = new Person("zhangsan",10);
Person p2 = (Person) getCopy(p);
System.out.println("after copy");
System.out.println("p2 name: "+p2.name+" age: "+p2.age);
p2.setAge(20);
System.out.println("after set p2 age to 20");
System.out.println("p name: "+p.name+" age: "+p.age);
System.out.println("p2 name: "+p2.name+" age: "+p2.age);
}
public static Object getCopy(Object src)throws Exception{
Object obj = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(src);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
obj = ois.readObject();
return obj;
}
}