gpt4 book ai didi

java - 我可以在不可变类中使用 StringBuilder

转载 作者:行者123 更新时间:2023-12-04 16:45:13 27 4
gpt4 key购买 nike

如果我创建一个不可变类。所有字段都必须是最终的。如果我像这样使用 stringbuilder final StringBuilder s = new StringBuilder("你好");

,那么 append 函数可以追加 s 的值,并且类不会是不可变的。请指教。

最佳答案

它是“浅层不可变”的,因为您不能更改字段本身,但它不是完全不可变的 - 这意味着您几乎失去了与不变性相关的所有好处。

基本上要实现不变性,所有组成部分都必须自然不变,或者有时您可以使用可变的东西而逃脱,但是a)您构建了它,所以没有其他东西引用它; b) 你从不暴露对它的引用; c) 你永远不会自己改变它。

例如,您可以编写一个使用 java.util.Date 的不可变类型(尽管我强烈建议您使用 java.time)——您只需需要确保如果您想从方法返回日期,您克隆了它而不是返回字段的值。

关于java - 我可以在不可变类中使用 StringBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57981224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com