一尘不染

为什么在Java中将String类声明为final?

java

当我得知该类java.lang.String在Java中被声明为final时,我想知道为什么会这样。那时我没有找到任何答案,但是这篇文章:如何在Java中创建String类的副本?让我想起了我的疑问。

当然,String提供了我所需要的所有功能,而且我从未想过需要扩展String类的任何操作,但是您仍然永远不会知道有人可能需要什么!

那么,有谁知道设计师决定将其定稿时的意图是什么?


阅读 584

收藏
2020-03-11

共1个答案

一尘不染

将字符串实现为不可变对象非常有用。你应该阅读不变性,以了解更多有关不变性的信息。

不变对象的一个优点是

你可以通过将重复副本指向单个实例来共享它们。

如果String不是最终的,则可以创建一个子类,并具有两个“视为字符串”时看起来相似的字符串,但实际上是不同的。

2020-03-11