在java中返回值是返回已经的对象类型(如String)或返回不可变对象的副本的问题。immutable
immutable
示例 1 - 已不可变的对象
public String getValue() {
return value;
}
示例 2 - 已不可变对象的集合
public List<String> getValues() {
return new ArrayList<String>(values);
}
示例 3 - 非不可变对象
public Complex getComplex() {
return complex.clone();
}
示例 4 - 非不可变对象的集合
public List<Complex> getComplex() {
List<Complex> copy = new ArrayList<Complex>(complexs.size());
for (Complex c : complexs)
copy.add(c.clone());
return copy;
}
示例 3 和 4 用于方便,因为复杂类型实现了可克隆
接口。
此外,为了避免子类覆盖不可变方法,您可以声明它们。作为旁注,生成器
模式通常用于构造不可变对象。final