public interface Processor<T> {
public void process(T object);
}
E poi un metodo di supporto:
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());
}
Si potrebbe mettere che metodo di supporto alla classe che lo utilizza, se v'è una sola (e renderlo private
), o mettere un programma di utilità classe che è condivisa da tutto il programma.
Ovviamente ci sono altri modi per codificare processAll
; ad esempio, è possibile utilizzare un ciclo for
in una delle raccolte. In ogni caso, suddividere questo codice di basso livello in un metodo di supporto renderà il tuo codice di livello superiore più pulito e meno "rumoroso". E se stai facendo qualcosa di simile in più parti del programma, possono condividere il metodo di supporto.
fonte
2012-02-21 07:34:38
fa un'interfaccia Iterable supporto? – Wint
No. È solo un oggetto personalizzato. Quanto sarebbe utile? Voglio dire che ce ne dovrebbe essere uno? – Jim
Dai un'occhiata a questa risposta: http://stackoverflow.com/a/8104205/1029272 Facile da implementare e funziona a meraviglia. L'ho installato e funzionante negli ultimi 5 minuti per provarlo. – Deco