java - Deciding between different approaches for instantiating a List<Foo> foo from fooService.getFoos() -
अगर fooService.getFoos ()
रिटर्न सूची & lt; Foo & gt;
तो आप इसे लिख सकते हैं:
सूची & lt; Foo & gt; FooList = fooService.getFoos ();
या यह:
सूची & lt; Foo & gt; FooList = नया अर्रेलिस्ट (fooService.getFoos ());
क्या इन दो तरीकों के बीच परिणामस्वरूप fooList
में कोई महत्वपूर्ण अंतर है?
हां - आप एक पूरी तरह से नया सूची
बना रहे हैं, जिसमें मूल एक के तत्व हैं। आप मेमोरी में संग्रह का नकल कर रहे हैं, और इसे शुरू से लेकर अंत तक दोहरा रहे हैं। आप सेवा द्वारा प्रदान किए गए उदाहरण का भी उपयोग नहीं कर रहे हैं, और आप मूल को संशोधित नहीं कर सकते। और अंत में, आपने दूसरी स्निपेट में जेनेरिक घोषणा छोड़ी है।
तो पहले विकल्प का उपयोग करें।
अपडेट: आपने संकेत दिया था कि आपको अनुमति नहीं है मूल सूची को संशोधित करने के लिए यह वास्तव में fooService
की एक समस्या है, उसके ग्राहकों की नहीं यदि सेवा आपके नियंत्रण में भी है, तो Collections.unmodifiableList (मूल लिस्ट)
लौटाएं - इस प्रकार क्लाइंट संशोधन कार्रवाइयां करने में सक्षम नहीं होंगे (प्रयास अपवाद को फेंक दिया जाएगा)
Comments
Post a Comment