我有這個類:從參數分配集合的首選方式是什麼?
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