【发布时间】:2019-09-18 03:59:08
【问题描述】:
如果我创建一个不可变的类。所有字段都必须是最终的。如果我像这样使用 stringbuilder final StringBuilder s = new StringBuilder("你好");
,那么 append 函数可以附加 s 的值,并且类不会是不可变的。请指教。
【问题讨论】:
-
不知道为什么要像 StringBuilder 这样的类作为实例变量?它主要只在需要时创建,然后在构建字符串后丢弃。
-
由于
StringBuilder是对象的一部分,它的 state 是您的对象 state 的一部分,并且因为它可以被修改(变异),这意味着您的对象根本不是不可变的。不管它是否 99% 是不可变的,如果任何东西都可以变异,那么它就不是不可变的。
标签: java string immutability