我们的代码有几个处理器,每个处理器都有几个 api 方法,其中每个方法都被重载了可以接受集合的相同方法。
例如:
public class Foo {
public X foo(Y y){...}
public Collection<X> foo(Collection<Y> y){... // iterate and execute foo(y) ... }
public Z bar(W w){...}
public Collection<Z> bar(Collection<W> w){... // iterate and execute bar(w) ... }
}
public class Other{
// also method and method on collection
}
自然,那些关于集合的方法实际上是迭代的重复代码。
我们正在寻找的是一种创建某种模式或使用泛型的方法,因此对集合的迭代将被实现一次,也为此需要一种以某种方式传递方法名称的方法。