有人能给我一个在java中真实世界使用不可变类的例子吗? 真正的目的是什么?例如,为什么String是不可变的
答案 0 :(得分:2)
一个原因是不可变类是线程安全的。
答案 1 :(得分:1)
因为正确管理共享可变状态很困难(有时效率低下)。如果String
不是不可变的,则必须使每个方法都是线程安全的,并允许更改字符串的内容。在这种情况下是不可变的意味着不需要锁定,因为你只能用字符串来读它。
这是功能性编程语言的主要优点之一;所有状态都是不可变的(即不允许破坏性更新)。
答案 2 :(得分:0)
不可变类是不可变的,因此任何对该对象具有现有引用的对象都不会搞砸,这些对象依赖于保持相同的对象内部的信息。在某些情况下,它在效率方面略有下降,但权衡是可靠性和稳定性。它基本上意味着为每个使用的方法创建一个新对象。