1
我有一個方法可以處理某些形式的集合。但是,是否可以擴展運行該方法的集合類型的數量? 我不是說像ArrayList這樣的泛型集合,而是使用ArrayLists,Arrays,Collections,Sets,Hashtables的方法?是否有一種操作泛型類型的集合?
我有一個方法可以處理某些形式的集合。但是,是否可以擴展運行該方法的集合類型的數量? 我不是說像ArrayList這樣的泛型集合,而是使用ArrayLists,Arrays,Collections,Sets,Hashtables的方法?是否有一種操作泛型類型的集合?
雖然您不能直接擴展該方法以支持您提到的其他類型,但您可以通過重載方法從API的角度完成此操作。例如,如果你實現一個方法來處理所有集合:
public <T> void processData(Collection<T> data) { ... }
,將爲實現Collection
所有類型的工作。您可以爲每種不是Collection
的類型重載此方法。例如:
public <T> void processData(T[] data) {
processData(Arrays.asList(data));
}
在此示例中,將處理該Collection
結構陣列太相同的方法,使用重新。沒有實現Collection
或數組的每種類型都需要另一種專用的重載方法,將其轉換爲Collection
,或者更可能的是,以對其有意義的方式處理該數據結構。
最後,通過重載方法,您可以調用相同名稱的方法並傳入各種類型的方法。因此,從API的角度來看,它總是看起來像你調用同一個方法:
Collection<String> coll = new ArrayList<String>();
int[] arrayOfInts = new int[10];
// You can call processData on both of these types now
processData(coll);
processData(arrayOfInts);
數組不是集合 – Bohemian 2015-01-31 20:58:43
陣列和Hashtable不是收藏。 – Michal 2015-01-31 20:58:58
這個問題還不清楚。你能分享一些代碼嗎? – Mureinik 2015-01-31 21:00:45