为什么我们需要不变的阶级?

我无法获得需要不可变类的方案。
您是否曾经遇到过此类要求?或者您可以给我们提供任何实际的示例来说明我们应该使用这种模式的情况。



慕仙森
浏览 511回答 3
3回答

森林海

Joshua Bloch撰写的有效Java概述了编写不可变类的几个原因:简单-每个班级仅处于一种状态线程安全-因为状态不能更改,所以不需要同步以一成不变的风格编写代码可以带来更强大的代码。想象一下字符串不是一成不变的吗?任何返回String的getter方法都将要求实现在返回String之前创建一个防御性副本-否则客户端可能会意外或恶意破坏该对象的状态。通常,除非导致严重的性能问题,否则使对象不可变是一种好习惯。在这种情况下,可变的构建器对象可用于构建不可变的对象,例如StringBuilder

慕森王

Java实际上是所有引用之一。有时一个实例被多次引用。如果更改这样的实例,它将反映到其所有引用中。有时,您根本不想使用它来提高鲁棒性和线程安全性。然后,一个不可变的类很有用,因此必须创建一个新实例并将其重新分配给当前引用。这样,其他引用的原始实例将保持不变。想象一下,如果Java String是可变的,它将是什么样子。
打开App,查看更多内容
随时随地看视频慕课网APP