2013-08-17 27 views
2

在java中使用的技術使字符串不可變?
或者我如何讓我的字符串類不可變。
我只想知道這背後的邏輯。在java中使用的技術使字符串不可變?

+2

字符串已經是不可變的。 – kiheru

+3

JDK在'src.zip'文件中爲Java標準類提供了源代碼。看看String類的代碼,你會看到它是如何完成的。另請參閱[如何創建不可變對象在Java](http://stackoverflow.com/questions/6305752/how-to-create-immutable-objects-in-java) – Pshemo

+0

@Pshemo在'src.zip'中包含所有公開的源文件。但對初學者來說很難理解。 :( – gifpif

回答

7

在Java中,String對象已經不可改變。

我不能怎麼Java語言的創作者特別提出String一成不變的說話,但這裏有一些guidelines,你可以遵循,使自己的類不可變的:

  1. 不要使用setter方法。
  2. 使所有字段privatefinal
  3. 不允許覆蓋方法(使類final或使用工廠模式)。
  4. 如果任何字段是可變類型的對象,請小心使用這些對象時:在將這些對象從getter方法返回或在構造函數中接收它們時防禦性地克隆它們,並且不提供修改可變對象的方法。
+0

+1類最終或使用工廠模式「 - 大多數時候只聽說過'最後一個',但這個'工廠模式'似乎也很有用:) – exexzian