当类中存在可变对象数据域的时候,浅拷贝会存在问题,因为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();
}

本文探讨了当类中包含可变对象数据成员时浅拷贝可能导致的问题,并通过两个具体示例进行了解释:一是修改对象状态的影响;二是重新引用其他对象的情况。

被折叠的 条评论
为什么被折叠?



