【发布时间】:2015-03-11 10:52:25
【问题描述】:
根据许多文档,我已经看到不可变类应该具有以下特性:
类应该是最终的
所有方法都应该是final
所有变量都应该是final
不应有任何二传手
但我的问题是:
如果我有一个只有最终变量的类怎么办?
如果我也有设置器,我无法更改对象的状态,因为我拥有所有最终变量。那么这将如何影响不变性呢?
在这种情况下继承如何改变对象状态?
【问题讨论】:
-
附加点 - 所有字段也必须是不可变的。想象一下
public final String[] myArray- 您可以轻松地从外部更改内容 -
最终类只有种最终方法,因为您不能继承和覆盖它们。
-
如果你的类是最终类,则不允许继承
-
@binkan ,如果我也覆盖了行为,引用也会改变。因此我的对象不受影响。那么不变性如何影响我的对象状态?
-
你的 getter 应该返回所有返回对象的克隆。
标签: java class immutability final