可以采用类还是集合的通用Java 5方法?

时间:2010-03-02 21:12:58

标签: java generics

我有一个逻辑,我在一个方法中构建XML数据。 XML数据由ArrayList或ModelClass构建。对于这两者,构建XML的逻辑完全相同。目前我有两种不同的方法来处理这个问题,因此代码重复。我想使用1个单独的方法,它可以将集合或类作为参数。可能吗?我是否需要考虑其他一些优化方法? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

将2个方法重构为单个private方法,采用Object参数或其实际期望的任何全局类型,并让两个public方法调用它。 E.g。

public void doStuff(Class<?> c) {
    doGenericStuff(c);
}

public void doStuff(Collection<?> c) {
    doGenericStuff(c);
}

private void doGenericStuff(Object c) {
    // Do whatever you did in each of the original methods.
}

或许这甚至可能(我不知道这些方法应该做什么以及他们期望的“全局类型”)。

public void doStuff(Class<?> c) {
    doStuff(Collections.singleton(c));
}

public void doStuff(Collection<?> c) {
    // Do whatever you did in the original method.
}

答案 1 :(得分:0)

为什么不创建一个接受集合的方法,然后迭代集合并处理每个项目。通过这种方式,您可以使用多个集合或一个集合来调用该方法 - 它们将以相同的方式处理。

这假设您宁愿抵消方法调用者的不便,因为在单个项目的情况下需要创建一个集合。如果这是您关注的问题,那么您应该只创建两个方法并让接受集合的方法调用选择单个值的方法,以便仍然可以共享实现。