2015-01-31 66 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);