当类中存在可变对象数据域的时候,浅拷贝会存在问题,因为origina和copy共同引用一个可变对象,当其中一方改变对象状态时,另一方所存储的也发生改变
这里的改变,是指对象变量所引用的对象不变,只是所引用的对象的状态发生改变,如果变量重新引用其他对象,则不会影响到另一方,下面的例子简单说明这种情况
1.所引用的对象的状态发生改变,如果是浅拷贝,调用该方法,存在问题
public void setHireDay(int year, int month, int day)
{
GregorianCalendar calendar = new GregorianCalendar(year, month-1, day);
Date newHiDay = calendar.getTime();
hireDay.setTime(newHiDay.getTime());
}
public void setHireDay(int year, int month, int day)
{
GregorianCalendar calendar = new GregorianCalendar(year, month-1, day);
hireDay = calendar.getTime();
}