public interface Processor<T> {
public void process(T object);
}
Y entonces un método de ayuda:
public static <T> void processAll(Collection<T> items, Collection<? extends Processor<T>> processors) {
Iterator<T> i = items.iterator();
Iterator<? extends Processor<T>> p = processors.iterator();
while(i.hasNext() && p.hasNext())
p.next().process(i.next());
}
Usted puede poner ese método de ayuda en la clase que lo utiliza, si sólo hay uno (y que sea private
), o ponerlo una utilidad clase que es compartida por todo el programa.
Por supuesto, hay otras maneras de codificar processAll
; por ejemplo, puede usar un bucle for
en una de las colecciones. Pero en cualquier caso, dividir este código de bajo nivel en un método de ayuda hará que su código de nivel superior sea más limpio y menos "ruidoso". Y si está haciendo algo similar en varias partes del programa, puede compartir el método de ayuda.
hace una interfaz Iterable apoyo? – Wint
No. Es solo un objeto personalizado. ¿Cómo sería esa ayuda? Quiero decir, ¿debería haber una? – Jim
Echa un vistazo a esta respuesta: http://stackoverflow.com/a/8104205/1029272 Fácil de implementar, y funciona como un regalo. Lo puse en funcionamiento en los últimos 5 minutos para probarlo. – Deco