使用该setter,某人可以 *
考虑一下
class MyClass {
private Date billDate;
public void setBillDate(Date billDate) {
this.billDate = billDate;
}
}
现在有人可以设置它
MyClass m = new MyClass();
Date dateToBeSet = new Date();
m.setBillDate(dateToBeSet); //The actual dateToBeSet is set to m
dateToBeSet.setYear(...);
//^^^^^^^^ Un-intentional modification to dateToBeSet, will also modify the m's billDate
为避免这种情况,您可能需要在设置之前进行
public void setBillDate(Date billDate) {
this.billDate = new Date(billDate.getTime());
}