java常见不可变类_Java语言不可变类的诀窍
示例
不可變對象是狀態無法更改的對象。不可變類是其實例根據設計和實現是不可變的類。作為不可變性示例最常見的Java類是java.lang.String。
以下是陳規定型的示例:
public?final?class?Person?{
private?final?String?name;
private?final?String?ssn;?????// (SSN ==社會安全號碼)
public?Person(String?name,?String?ssn)?{
this.name=?name;
this.ssn=?ssn;
}
public?String?getName()?{
return?name;
}
public?String?getSSN()?{
return?ssn;
}
}
對此的一種變體是將構造函數聲明為,private并提供一個public static工廠方法。
不變類的 ?標準配方如下:所有屬性必須在constructor(s)或工廠中設置method(s)。
應該沒有二傳手。
如果出于接口兼容性的原因而必須包含setter,則它們應該什么都不做或拋出異常。
所有屬性都應聲明為private和final。
對于引用可變類型的所有屬性:該屬性應使用通過構造函數傳遞的值的深層副本進行初始化,并且
屬性的getter應該返回屬性值的深層副本。
應該聲明該類,final以防止有人創建不可變類的可變子類。
還有兩點需要注意:不變性不會阻止對象為空。例如null可以分配給String變量。
如果將不可變的類屬性聲明為final,則實例本質上是線程安全的。這使不可變類成為實現多線程應用程序的良好構建塊。
總結
以上是生活随笔為你收集整理的java常见不可变类_Java语言不可变类的诀窍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java查看虚拟机信息_java分析工具
- 下一篇: python中等于号可以用is代替_py