有没有办法操作泛型类型的集合?

时间:2015-01-31 20:56:09

标签: java collections set

我有一种方法可以处理某种形式的集合。但是,是否可以扩展集合类型的数量以运行该方法? 我不是指像ArrayList这样的泛型集合,但是该方法可以在ArrayLists,Arrays,Collections,Sets,Hashtables上使用吗?

1 个答案:

答案 0 :(得分: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);