假设我有一个不变的类,说雇员,其地址类型为如下所示的可变成员地址字段:
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类试图保持不变,但确实如此吗?
我们可以更改Employee对象的地址,从而打破不变性。尽管拥有可变成员,但Employee类仍然可以保持不变的方式有哪些?
一个绝对不变的类只能是:
因此,在您的情况下,实现了部分不变性。