import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
public class Test3 {
public static void main(String[] args){
Student s1=new Student();
s1.setId(100L);
s1.setBirth(new Date());
Student s2=(Student)s1.deeClone();
s2.getBirth().setYear(900);
System.out.println(s1);
System.out.println(s2);
}
}
class Student implements Serializable{
private Long id;
private Date birth;
private transient String password;
public Student deeClone() {
Student res=null;
try {
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(baos);
oos.writeObject(this);
ObjectInputStream ois=new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
res=(Student)ois.readObject();
oos.close();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
@Override
public String toString() {
return "Student [id=" + id + ", birth=" + birth + ", password=" + password + "]";
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
}