Serializable deep copy

来源:互联网 发布:图书管理系统java项目 编辑:程序博客网 时间:2024/05/18 02:25
package com.samsung.TextFileTest;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class SerialCloneTest {    public static void main(String[] args) throws Exception {        Employee harry = new Employee("Harry Hacker", 35000, 1989, 10, 1);        Employee harry2 = (Employee) harry.clone();        harry.raiseSalay(10.0);        System.out.println(harry);        System.out.println(harry2);    }}class SerialCloneable implements Cloneable,Serializable {    private static final long serialVersionUID = 7182800251849015546L;    @Override    protected Object clone(){        // TODO Auto-generated method stub        try {            ByteArrayOutputStream bout=new ByteArrayOutputStream();            ObjectOutputStream out=new ObjectOutputStream(bout);            out.writeObject(this);            out.close();            ByteArrayInputStream bin=new ByteArrayInputStream(bout.toByteArray());            ObjectInputStream in = new ObjectInputStream(bin);            Object ret=in.readObject();            return ret;        } catch (Exception e) {            // TODO Auto-generated catch block            return null;        }    }}
package com.samsung.TextFileTest;import java.util.Date;import java.util.GregorianCalendar;public class Employee extends SerialCloneable{    private String name;    private double salay;    private Date hireDay;    public Employee(){    }    public Employee(String name, double salay, int year, int month, int day) {        super();        this.name = name;        this.salay = salay;        GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);        this.hireDay=calendar.getTime();    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public double getSalay() {        return salay;    }    public void setSalay(double salay) {        this.salay = salay;    }    public void setHireDay(Date hireDay) {        this.hireDay = hireDay;    }    @Override    public String toString() {        return "Employee [name=" + name + ", salay=" + salay + ", hireDay=" + hireDay + "]";    }    public void raiseSalay(double add){        this.salay=this.salay*(add/100+1);    }}
Employee [name=Harry Hacker, salay=38500.0, hireDay=Sun Oct 01 00:00:00 CST 1989]Employee [name=Harry Hacker, salay=35000.0, hireDay=Sun Oct 01 00:00:00 CST 1989]
0 0
原创粉丝点击