Java でクラスjava.lang.String
が final として宣言されていることを知ったときから、私はそれがなぜなのか疑問に思っていました。当時は答えを見つけられませんでしたが、この投稿には次のような答えがありました。Java で String クラスのレプリカを作成する方法は?私の質問を思い出しました。
確かに、String は私が必要とするすべての機能を提供し、String クラスの拡張を必要とする操作は考えたこともありませんでしたが、それでも、誰かが何を必要とするかは決してわかりません。
それで、デザイナーがこれを最終版にすることを決めたときの意図が何だったか知っている人はいますか?
ベストアンサー1
文字列を次のように実装すると非常に便利です。不変オブジェクト. 読んでみてください不変性それについてもっと理解するために。
の1つの利点は不変オブジェクトそれは
重複したものを単一のインスタンスにポイントすることで共有できます。
(からここ)。
String が final でない場合、サブクラスを作成して、「String として見たときには」同じように見えても実際には異なる 2 つの文字列を作成できます。