前言
在工程中,我们创建了一个类,经常包含一些可变类的对象实例,当我们需要提取这些数据的时候,需要格外注意,否则会出一些意料之外的问题
正文
名词解释
可变对象:类中有方法可以改变其对象实例域(数据域)的类
举例
假设我们有一个example类,其中为Date类创建了一个实体birthday,在外部需要知道某个example类实例的birthday值时,会使用到getBirthday()方法,通常我们的getBirthday()方法会写成如下的样子:
class Example{
private Date birthday;
...
public Date getBirthday{
return birthday;
}
...
}
这样的写法,会破坏example类的封装性,因为当外部调用了getBirthday()这个方法后,生成了另一个对于birthday所引用对象的引用,在新的引用中调用Date类中的方法,同样会改变当前实例中birthday的值,例如如下代码:
Example e =