这个类是不可变的吗?

时间:2017-08-31 22:21:35

标签: java immutability

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之类的方法时,会在创建对象后将内容添加到列表中。

由于

1 个答案:

答案 0 :(得分:-3)

从技术上讲,它是不可改变的。

但是你可以通过它访问的对象(otherNames)不是,所以它不是线程安全的。