[英]Immutable class with mutable member field
假設我有一個不可變的 class 說 Employee 具有類型為 Address class 的可變成員地址字段,如下所示:
public final class Employee{
private final Integer empId;
private final String empName;
private final Address address;
public Integer getEmpId(){
return empId;
}
public String getEmpName(){
return empName;
}
public Address getAddress(){
return address;
}
}
public class Address {
private String firstLine;
private String secondLine;
private Integer pinCode;
public String getFirstLine() {
return firstLine;
}
public void setFirstLine(String firstLine) {
this.firstLine = firstLine;
}
public String getSecondLine() {
return secondLine;
}
public void setSecondLine(String secondLine) {
this.secondLine = secondLine;
}
public Integer getPinCode() {
return pinCode;
}
public void setPinCode(Integer pinCode) {
this.pinCode = pinCode;
}
}
如上所示,Employee class 試圖保持不變,但真的是這樣嗎?
我們可以更改員工 object 的地址,從而打破不變性。 盡管有可變成員,Employee class 仍然可以不可變的方式是什么?
一個絕對不可變的 class 只能是:
因此,setter 不應該出現在此類中。
因此,在您的情況下,實現了部分不變性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.