public interface Processor<T> {
public void process(T object);
}
और फिर एक सहायक विधि:
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());
}
आप वर्ग करता है, तो वहाँ केवल एक ही है जो इसे इस्तेमाल करता है, पर है कि सहायक विधि डाल सकता है (और यह private
बनाने), या यह एक उपयोगिता डाल कक्षा जो पूरे कार्यक्रम द्वारा साझा की जाती है।
बेशक processAll
कोड करने के अन्य तरीके हैं; उदाहरण के लिए, आप संग्रह में से किसी एक पर for
पाश का उपयोग कर सकते हैं। लेकिन किसी भी मामले में, इस निम्न-स्तरीय कोड को एक सहायक विधि में तोड़ने से आपका उच्च-स्तरीय कोड क्लीनर और कम "शोर" बन जाएगा। और यदि आप प्रोग्राम के कई हिस्सों में कुछ ऐसा कर रहे हैं, तो वे सहायक विधि साझा कर सकते हैं।
स्रोत
2012-02-21 07:34:38
एक समर्थन Iterable इंटरफ़ेस करता है? – Wint
नहीं। यह सिर्फ एक कस्टम वस्तु है। यह कैसे मदद करेगा? मेरा मतलब है कि एक होना चाहिए? – Jim
इस उत्तर को देखें: http://stackoverflow.com/a/8104205/1029272 लागू करने में आसान है, और एक इलाज करता है। मैं इसे पाने के लिए पिछले 5 मिनट के भीतर इसे चला गया और चल रहा था। – Deco