在java中使用的技術使字符串不可變?
或者我如何讓我的字符串類不可變。
我只想知道這背後的邏輯。在java中使用的技術使字符串不可變?
2
A
回答
2
String
Java中的類已經是不可變的了。
僅供參考,請參閱http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
文檔如果你想看到的Java String類實現,請訪問:http://docjar.com/html/api/java/lang/String.java.html
7
在Java中,String
對象已經不可改變。
我不能怎麼Java語言的創作者特別提出String
一成不變的說話,但這裏有一些guidelines,你可以遵循,使自己的類不可變的:
- 不要使用setter方法。
- 使所有字段
private
和final
。 - 不允許覆蓋方法(使類
final
或使用工廠模式)。 - 如果任何字段是可變類型的對象,請小心使用這些對象時:在將這些對象從getter方法返回或在構造函數中接收它們時防禦性地克隆它們,並且不提供修改可變對象的方法。
+0
+1類最終或使用工廠模式「 - 大多數時候只聽說過'最後一個',但這個'工廠模式'似乎也很有用:) – exexzian
相關問題
- 1. 使用'我很高興'的字符串轉義 - 技術術語?
- 2. 如何在使用JS加密技術加密的Java字符串中解密
- 3. 如何在java中使用數組或其他技術的字符串位置
- 4. 不使用字符串的可變長度算術計算器?
- 5. 在Java中不可變的字符串?
- 6. 使用字符串距離技術在R中創建因子變量
- 7. 在Java中生成較小字符串的加密技術
- 8. 使用字符串相似性技術的記錄鏈接
- 9. 使用模式匹配技術的字符串長度
- 10. 使用UI技術的網絡技術
- 11. PHP在算術中使用字符串
- 12. 使用字符串可變
- 13. 在JavaScript中加密字符串並使用RSA技術在PHP中解密
- 14. 使用不可變字符串構建高效字符串
- 15. 使用推技術
- 16. Java字符串是不可變的嗎?
- 17. 使用Java技術流式傳輸MP3
- 18. 要使用哪些Java EE技術?
- 19. java - 使字符串不可讀
- 20. 使Ruby字符串不可變
- 21. 使用JMS技術的SMTP
- 22. 在C中,有關%d如何識別字符串變量的技術說明
- 23. 在Java中使用「@」的字符串?
- 24. 在Java技術鏈賦值給變量
- 25. 瞭解不使用GUI的不同Java技術?
- 26. Java中的可變字符串
- 27. Android視覺中使用哪種字符識別技術
- 28. Java WebService技術
- 29. C#使用字符串變量作爲算術運算符
- 30. 在C#中使用抽象類的技術原因/ Java
字符串已經是不可變的。 – kiheru
JDK在'src.zip'文件中爲Java標準類提供了源代碼。看看String類的代碼,你會看到它是如何完成的。另請參閱[如何創建不可變對象在Java](http://stackoverflow.com/questions/6305752/how-to-create-immutable-objects-in-java) – Pshemo
@Pshemo在'src.zip'中包含所有公開的源文件。但對初學者來說很難理解。 :( – gifpif