为什么要使一类不变? [重复]

问题描述

|                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

原因之一是不可变类是线程安全的。     ,因为很难(有时效率低下)正确管理共享的可变状态。如果
String
不变,则每个方法都必须具有线程安全性,并允许更改字符串的内容。在这种情况下,不可变意味着不需要锁定,因为您只能对字符串进行读取。 这是功能编程语言的主要优点之一。所有状态都是不可变的(即不允许破坏性更新)。     ,一个不可变的类是不可变的,因此任何具有该对象现有引用的对象都不会混乱,它们依赖于对象内部的信息保持不变。在某些情况下,它对效率有轻微的影响,但要权衡的是可靠性和稳定性。基本上,这意味着将为所使用的每种方法创建一个新对象。