【笔记】java核心技术-对象的克隆

来源:互联网 发布:文言文辞职信走红网络 编辑:程序博客网 时间:2024/05/21 00:47

拷贝与克隆

object类中的clone方法默认是浅拷贝

浅拷贝

Cloneable接口
一个已检验异常(checked exception)

这里写图片描述

数组的克隆

/* Employee.java */package clone;import java.util.Date;import java.util.GregorianCalendar;public class Employee implements Cloneable{    private String name;    private double salary;    private Date hireDay;    public Employee(String n, double s){        name = n;        salary = s;        hireDay = new Date();    }    public Employee clone() throws CloneNotSupportedException{        Employee cloned = (Employee) super.clone();        cloned.hireDay = (Date) hireDay.clone();        return cloned;    }    public void setHireDay(int year, int month, int day){        Date newHireDay = new GregorianCalendar(year, month-1, day).getTime();        hireDay.setTime(newHireDay.getTime());    }    public void raiseSalary(double byPercent){        double raise = salary * byPercent /100;        salary += raise;    }    public String toString(){        return "Employee[name=" + name+" , salary="+salary+",hireDay="+hireDay+"]";    }}
/* CloneTest.java */package clone;public class CloneTest {    public static  void  main(String[] args) {        try{            Employee original = new Employee("john", 50000);            original.setHireDay(2000, 1, 1);            Employee copy=original.clone();            copy.raiseSalary(10);            copy.setHireDay(2001, 12, 31);            System.out.println("original=" + original);            System.out.println("copy" + copy);        }        catch (CloneNotSupportedException e) {            // TODO: handle exception            e.printStackTrace();        }    }}
0 0
原创粉丝点击