来自http://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html:
不要提供“setter”方法——修改字段或字段引用的对象的方法。将所有字段设为最终字段和私有字段。不允许子类覆盖方法。最简单的方法是将类声明为 final。更复杂的方法是使构造函数私有并在工厂方法中构造实例。如果实例字段包含对可变对象的引用,则不允许更改这些对象:不要提供修改可变对象的方法。不要共享对可变对象的引用。永远不要存储对传递给构造函数的外部可变对象的引用;如有必要,创建副本并存储对副本的引用。相似地,
一个名为 Employee 的类有一个Address 类型的实例变量a
我的问题:应该怎样做才能使这个类不可变(条件:我想从 getAddress() getter返回相同的实例变量a )。
我应该使地址类不可变吗?
注意:我理解防御副本,但不想使用这个