在java中创建不可变的返回值是返回已经不可变的对象类型(例如
String)或返回不可变对象的副本的问题.
示例1 – 已经是不可变的对象
public String getValue() {
return value;
}
示例2 – 已经不可变对象的集合
public List getValues() {
return new ArrayList(values);
}
示例3 – 不可变对象
public Complex getComplex() {
return complex.clone();
}
样品4 – 收集不可变物体
public List getComplex() {
List copy = new ArrayList(complexs.size());
for (Complex c : complexs)
copy.add(c.clone());
return copy;
}
示例3和4是为了方便,复杂类型实现了Cloneable接口.
此外,为了避免子类覆盖您的不可变方法,您可以将其声明为final.作为附注,builder模式通常用于构建不可变对象.