2012-01-11 31 views

回答

0

因爲這讓他們更容易使用:

  • 線程安全的不同步
  • 可用作地圖中的一個關鍵
  • 沒有必要創建每個防守副本當你通過或返回他們
  • poolable
  • ...
+0

這些都是很好的理由和(糾正我,如果我錯了)他們都影響字符串內容的不變性,不是嗎? – maerics 2012-01-11 17:32:11

+0

問題是:「爲什麼String類不可變?」。這不是「爲什麼String類最終?」。 – 2012-01-11 17:39:28

2

因爲如果String類是決賽,那麼你可以聲明字符串的子類,打破任何數量的String類的合同,尤其是不變性,並在不知情的程序員肆虐。

試想:

class MyString extends String { 
    // Override methods which mutate this instance... 
} 

現在只要一個MyString的是圍繞字符串來傳遞它可能會導致各種問題,特別是關於哈希,這依賴於字符串的不變性。

相關問題