最近看java核心技术里面提到的。
首先看一段代码
package structor;
import java.util.Date;
import java.util.GregorianCalendar;
public class Test0817 {
public static void main(String[] args){
Employee emp=new Employee();
System.out.println(emp.getHireDay());
Date d=emp.getHireDay();
d.setTime(d.getTime()+1000000000);
System.out.println(emp.getHireDay());
}
}
class Employee{
public Employee(){
GregorianCalendar gc=new GregorianCalendar();
hireDay=gc.getTime();
}
public Date getHireDay() {
return hireDay;
}
public void setHireDay(Date hireDay) {
this.hireDay = hireDay;
}
private Date hireDay;
}
运行结果是一样吗?
Wed Aug 17 22:11:46 CST 2016
Mon Aug 29 11:58:26 CST 2016
很明显不一样哦。
因为两者是改变的同一个对象,所以下面的改变了,上面的也改变了。
public Date getHireDay() {
return (Date)hireDay.clone();
}
这样的话,每次获取的都是克隆的值,所以不会影响原来的要获取的值。
Wed Aug 17 22:22:05 CST 2016
Wed Aug 17 22:22:05 CST 2016