注意:不要编写返回可变对象引用的get方法。
可变对象:可变对象:类中有方法可以改变其对象实例域(数据域)的类
举例:
class Example{
private Date birthday;
…
public Date getBirthday{ //BAD
return birthday;
}
…
}
当获取一个Date类的实例date时,可以由date来修改实例变量。这样就会破坏封装性,如果要返回一个可变对象的引用,首先应该使用clone()方法进行克隆。对象克隆时指存放在另一个新位置上的对象副本。
class Example{
private Date birthday;
…
public Date getBirthday{ //BAD
return (Date)birthday.clone()
}
…
}