可能重複:
Why can't strings be mutable in Java and .NET?
What's the advantage of a String be Immutable?爲什麼java將字符串創建爲IMMUTABLE CLASS?
任何一個可以告訴我爲什麼String類已經爲永恆不變的類創建, 這種設計方法背後的任何正當理由?
請分享你的想法
可能重複:
Why can't strings be mutable in Java and .NET?
What's the advantage of a String be Immutable?爲什麼java將字符串創建爲IMMUTABLE CLASS?
任何一個可以告訴我爲什麼String類已經爲永恆不變的類創建, 這種設計方法背後的任何正當理由?
請分享你的想法
因爲這讓他們更容易使用:
這些都是很好的理由和(糾正我,如果我錯了)他們都影響字符串內容的不變性,不是嗎? – maerics 2012-01-11 17:32:11
問題是:「爲什麼String類不可變?」。這不是「爲什麼String類最終?」。 – 2012-01-11 17:39:28
因爲如果String類是不決賽,那麼你可以聲明字符串的子類,打破任何數量的String類的合同,尤其是不變性,並在不知情的程序員肆虐。
試想:
class MyString extends String {
// Override methods which mutate this instance...
}
現在只要一個MyString的是圍繞字符串來傳遞它可能會導致各種問題,特別是關於哈希,這依賴於字符串的不變性。
這是一個非常常見的問題,本來可以通過谷歌回答。 – 2012-01-11 17:39:46