为什么要使一个类不可变?

时间:2011-04-13 19:35:46

标签: java

  

可能重复:
  Why do we need immutable class?

有人能给我一个在java中真实世界使用不可变类的例子吗? 真正的目的是什么?例如,为什么String是不可变的

3 个答案:

答案 0 :(得分:2)

一个原因是不可变类是线程安全的。

答案 1 :(得分:1)

因为正确管理共享可变状态很困难(有时效率低下)。如果String不是不可变的,则必须使每个方法都是线程安全的,并允许更改字符串的内容。在这种情况下是不可变的意味着不需要锁定,因为你只能用字符串来读它。

这是功能性编程语言的主要优点之一;所有状态都是不可变的(即不允许破坏性更新)。

答案 2 :(得分:0)

不可变类是不可变的,因此任何对该对象具有现有引用的对象都不会搞砸,这些对象依赖于保持相同的对象内部的信息。在某些情况下,它在效率方面略有下降,但权衡是可靠性和稳定性。它基本上意味着为每个使用的方法创建一个新对象。