我給我的泛型的第一步,而且我剛剛編寫了一個泛型函數來比較兩個列表對象,這樣的Java:對編程接口,而不必實例的具體類
public static <T> List<T> diffAdded(List<T> source, List<T> dest) {
List<T> ret = new ArrayList<T>();
for(T element: dest) {
if (!source.contains(element)) {
ret.add(element);
}
}
return ret;
}
一切工作正常,但我實例化一個ArrayList,因爲很明顯我不能實例化一個接口列表
事實是,我想回到同一類型源的對象...
你怎麼了處理這種情況?
我現在可以面對現在的方法嗎?
非常感謝
「*我想返回與源*相同類型的對象」 - 爲什麼?你可以使用反射來獲得真實的'source'類型,並創建一個帶反射的實例。但爲什麼? – 2012-02-21 21:39:51
我看到你的觀點,很好的回答... – opensas 2012-02-21 21:48:33
我同意下面的「代碼氣味」觀察。但是,如果你真的想,你可以添加一個instanceof檢查來源和實例化它的特定類型的列表... if(dest instanceof ArrayList)dest = new ArrayList(); etc .. –
John
2012-02-21 21:49:50