私たちのコードには複数のプロセッサがあり、それぞれに複数の 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
}
当然、コレクションに対するこれらのメソッドは、実際には反復の重複コードです。
私たちが探しているのは、何らかのパターンを作成したり、ジェネリックを使用したりするための一種の方法であるため、コレクションの反復は一度実装されます。これには、何らかの方法でメソッド名を渡す方法も必要です。