जावा में Iterable<T>
बनाम Collection<T>
का उपयोग करने के विचार क्या हैं?मुझे जावा में Iterable <T> बनाम संग्रह <T> के पैरामीटर को कब स्वीकार करना चाहिए?
उदाहरण के लिए, एक प्रकार को लागू करने पर विचार करें जो मुख्य रूप से Foo
एस, और कुछ संबंधित मेटाडेटा के संग्रह से संबंधित है। इस प्रकार के निर्माता ऑब्जेक्ट सूची के एक बार प्रारंभिकरण की अनुमति देता है। (मेटाडाटा बाद में सेट किया जा सकता है।) इस कन्स्ट्रक्टर को किस प्रकार का स्वीकार करना चाहिए? Iterable<Foo>
, या Collection<Foo>
?
इस निर्णय के लिए क्या विचार हैं?
पैटर्न ऐसे ArrayList
के रूप में पुस्तकालय प्रकार द्वारा निर्धारित (जो किसी भी Collection
से initialised किया जा सकता है, लेकिन एक Iterable
नहीं) मेरे नेतृत्व Collection<Foo>
उपयोग करने के लिए होता है के बाद।
लेकिन क्यों Iterable<Foo>
स्वीकार नहीं करते हैं, यह देखते हुए कि प्रारंभिकरण आवश्यकताओं के लिए यह पर्याप्त है? सख्ती से आवश्यक (Iterable
) की तुलना में, उपभोक्ता से उच्च स्तर की कार्यक्षमता (Collection
) क्यों मांगें?
इस बारे में एक महान लेख [यहां] [1] है। [1]: http://www.artima.com/weblogs/viewpost.jsp?thread=119193 – amischiefr