public final class Multi {
private final String name;
private final int number;
private final ArrayList<String> otherNames;
Multi(String name, int number) {
this.name = name;
this.number = number;
this.otherNames = new ArrayList<String>();
}
public void addOtherNames(String name) {
this.otherNames.add(name);
}
// All getter methods should be a copy of the class fields
public ArrayList<String> getOtherNames() {
return new ArrayList<String>(otherNames);
}
}
当涉及数据结构(如ArrayList等)时,我在理解不可变性方面遇到了一些麻烦。
当我有一个addOtherNames之类的方法时,会在创建对象后将内容添加到列表中。
由于
答案 0 :(得分:-3)
从技术上讲,它是不可改变的。
但是你可以通过它访问的对象(otherNames)不是,所以它不是线程安全的。