如果我创建一个不可变的类。所有字段都必须是最终的。如果我像这样使用 stringbuilder
最终 StringBuilder s = new StringBuilder("Hello ");
,那么append函数可以追加s的值并且类不会是不可变的。请指教。
它是“浅不可变”的,因为您无法更改字段本身,但它不是fully不可变——这意味着您几乎失去了与不可变性相关的所有好处。
基本上为了实现不变性,所有组成部分都必须be自然不变,或者有时你可以使用一些可变的东西,但是a)你构建了它,所以没有其他东西可以引用它; b) 你从来没有expose对它的引用; c) 你自己永远不会改变它。
例如,您可以编写一个不可变类型,使用java.util.Date
(虽然我强烈建议使用java.time
) - 您只需要确保如果您想从方法返回日期,您可以克隆它而不是返回字段的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)