如何在java中将对象成员设置为不可变?

时间:2018-02-10 10:04:17

标签: java immutability readonly

我想让我的班级成员成为不可变的。(甚至是对象成员的成员)。

public class Bar {

    private String data;

    public Bar(String data){
        this.data = data;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

public class Foo {
    private Bar bar;

    public Foo(Bar bar){
        this.bar = bar;
        }

    public Bar getBar() {
        return bar;
    }
}

主要用于测试

public static void main(String[] args){
    Bar bar = new Bar("initial data");
    Foo foo = new Foo(bar);
    System.out.println(foo.getBar().getData()); // "initial data"
    foo.getBar().setData("changed data");
    System.out.println(foo.getBar().getData()); // "changed data"
}

在此示例中,foo的bar是只读对象字段。但是使用getter方法,我可以访问该引用然后更改数据。

最后foo的栏被改变了。 我可以阻止这样的改变吗?

CNC中 不可变类没有可变类成员吗?

0 个答案:

没有答案