我有这堂课:
public MyClass {
public void initialize(Collection data) {
this.data = data; //
}
private Collection data;
}
这显然是糟糕的风格,因为我引入了一个共享的可变状态.处理这个问题的首选方法是什么?
>忽略它?
>克隆收藏?
> ……?
编辑:为了澄清为什么这是坏的,想象一下:
MyClass myObject = new MyClass();
List data = new ArrayList();
myObject.initialize(data); // myObject.data.size() == 0
data.add("Test"); // myObject.data.size() == 1
只是存储引用构成了一种将数据注入私有字段myObject.data的方法,尽管它应该是完全私有的.
根据MyClass的性质,这可能会产生严重影响.