我有这个类:从参数分配集合的首选方式是什么?
public MyClass {
public void initialize(Collection<String> data) {
this.data = data; // <-- Bad!
}
private Collection<String> data;
}
这显然是不好的风格,因为我引入一个共享的可变状态。处理这个问题的首选方法是什么?
- 忽略它吗?
- 克隆集合?
- ...?
编辑:解释,为什么这是不好的,想象一下:
MyClass myObject = new MyClass();
List<String> data = new ArrayList<String>();
myObject.initialize(data); // myObject.data.size() == 0
data.add("Test"); // myObject.data.size() == 1
只是存储参考构成的方式来注入数据的私有字段myObject.data
,尽管它应该是完全私人的。
根据MyClass
的性质,这可能会产生严重的影响。
何时以及状态如何改变?你的班级需要观察变化吗? – 2010-03-03 08:27:58
@Jesse:为这个问题增加了一个例子。 – 2010-03-03 08:39:26