编写返回引用可变对象的访问器方法,破坏了封装性
public class Person {
private Date birthday;
public Date getBirthday() {
return birthday;
}
}
public static strictfp void main(String[] args) {
Person person = new Person();
Date birthday = person.getBirthday();
/*
* 通过getBirthday,得到引用变量可改变birthday的值,破坏了封装性
*/
birthday.setTime(new Date().getTime());
}
如果需要返回一个可变对象的引用 , 应该首先对它进行克隆 ( clone ) 。
对象 clone 是指存放在另一个位置上的对象副本
public class Person {
private Date birthday;
public Date getBirthday() {
/*
* clone()方法
*/
return (Date)birthday.clone();
}
}