简介

clone 建立 深拷贝

code

核心代码

	public Employee clone() throws CloneNotSupportedException{
		Employee cloned = (Employee) super.clone();
		cloned.hireDay = (Date) hireDay.clone();
		return cloned;
	}
package cn;

public class CloneTest {
	public static void main(String[] args){
		try{
			Employee original = new Employee("John Q. Public", 50000);
			original.setHireDay(2000, 1, 1);
			Employee copy = original.clone();
			copy.raiseSalary(10);
			copy.setHireDay(2002, 12, 31);
			System.out.println("origin=" + original);
			System.out.println("copy = " + copy);
		}
		catch(CloneNotSupportedException e){
			e.printStackTrace();
		}
	}
}

package cn;

import java.util.Date;
import java.util.GregorianCalendar;

public class Employee implements Comparable, Cloneable {
private String name;
private double salary;
private Date hireDay;

public Employee(String name, double salary) {
	this.name = name;
	this.salary = salary;
	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 String getName(){
	return name;
}

public double getSalary() {
	return salary;
}

public void raiseSalary(double byPercent) {
	double raise = salary * byPercent / 100;
	salary += raise;
}

@Override
public int compareTo(Employee other) {
	// TODO Auto-generated method stub
	return Double.compare(salary,  other.salary);
}

public String toString() {
	return "Employee[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]";
}

}


posted on 2020-08-11 10:35  HDU李少帅  阅读(122)  评论(0编辑  收藏  举报