2015-01-31 71 views
1

我有一個方法可以處理某些形式的集合。但是,是否可以擴展運行該方法的集合類型的數量? 我不是說像ArrayList這樣的泛型集合,而是使用ArrayLists,Arrays,Collections,Sets,Hashtables的方法?是否有一種操作泛型類型的集合?

+2

數組不是集合 – Bohemian 2015-01-31 20:58:43

+2

陣列和Hashtable不是收藏。 – Michal 2015-01-31 20:58:58

+0

這個問題還不清楚。你能分享一些代碼嗎? – Mureinik 2015-01-31 21:00:45

回答

2

雖然您不能直接擴展該方法以支持您提到的其他類型,但您可以通過重載方法從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);