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