public interface Processor<T> {
public void process(T object);
}
Và sau đó là một phương pháp helper:
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());
}
Bạn có thể đặt rằng phương pháp helper trên lớp trong đó sử dụng nó, nếu có chỉ là một (và làm cho nó private
), hoặc đặt nó một tiện ích lớp được chia sẻ bởi toàn bộ chương trình.
Tất nhiên có các cách khác để mã processAll
; ví dụ: bạn có thể sử dụng vòng lặp for
trên một trong các bộ sưu tập. Nhưng trong mọi trường hợp, việc phá vỡ mã mức thấp này ra thành một phương thức trợ giúp sẽ làm cho mã của bạn cao hơn sạch hơn và ít "ồn ào hơn". Và nếu bạn đang làm một cái gì đó tương tự trong nhiều phần của chương trình, họ có thể chia sẻ phương thức trợ giúp.
Nguồn
2012-02-21 07:34:38
không hỗ trợ giao diện Iterable? – Wint
Không. Nó chỉ là một đối tượng tùy chỉnh. Làm thế nào mà có thể giúp tôi? Tôi có nghĩa là nên có một? – Jim
Xem câu trả lời này: http://stackoverflow.com/a/8104205/1029272 Dễ thực hiện và hoạt động tốt. Tôi đã thiết lập và chạy trong vòng 5 phút cuối cùng để dùng thử. – Deco