2008-10-03 5 views
15

क्या मेरे जावा प्रोग्राम में Collection.EMPTY_LIST का उपयोग करने का एक जेनेरिक फ्रेंडली तरीका है।क्या मैं अनचेक अपवाद के साथ Collections.EMPTY_LIST का उपयोग कर सकता हूं?

मुझे पता है कि मैं सिर्फ खुद को घोषित कर सकता हूं, लेकिन मुझे यह जानकर उत्सुकता है कि जेडीके में ऐसा करने का कोई तरीका है या नहीं।

कुछ की तरह users = Collections<User>.EMPTY_LIST;

उत्तर

31

करने से निम्नलिखित:

List<User> users = Collections.emptyList(); 

Collections.emptyList(); से लौटे सूची के प्रकार काम के बाएँ हाथ की ओर की वजह से अनुमानित एक String के रूप में किया जाएगा ।

List<User> users = Collections.<User>emptyList(); 

इस विशेष मामले में, यह ज्यादातर लोगों के लिए के रूप में अनावश्यक प्रकट हो सकता है (वास्तव में, मैं बहुत देखा है: हालांकि, अगर आप इस निष्कर्ष नहीं करना पसंद करते हैं, तो आप यह स्पष्ट रूप से कर का पालन करके परिभाषित कर सकते हैं जंगली कि स्पष्ट प्रकार तर्क का उपयोग) में आता है में बाहर छोटे कोड, तथापि हस्ताक्षर के साथ एक विधि के लिए: void doStuff(List<String> users) यह पूरी तरह से साफ एक एक स्पष्ट प्रकार तर्क के साथ doStuff() आह्वान करने के लिए के लिए इस प्रकार होगा:

doStuff(Collections.<String>emptyList()); 
+2

हर बार जब आप किसी विधि में एक स्पष्ट प्रकार का तर्क लिखते हैं, तो भगवान एक बिल्ली का बच्चा मारता है (मुझे लगता है कि यह जोश ब्लोच था जिसने यह कहा था) –

1
List<User> users = Collections.emptyList(); 
1

क्रिएटिन के बाद जी खाली सूची, मैं हर बार एक नया निर्माण करने के बजाय इसे स्थिर के रूप में संग्रहित करने की अनुशंसा करता हूं।

इसके अलावा, Collections.emptyList() बनाम new ArrayList(0) का उपयोग करने के लिए प्रदर्शन लाभ हैं, हालांकि अंतर शायद छोटा है। खाली सूची() द्वारा लौटाई गई सूची को एक अपरिवर्तनीय खाली सूची के रूप में अनुकूलित किया गया है। उदाहरण के लिए, आकार() विधि फ़ील्ड लुकअप या जो कुछ भी ऐरेलिस्ट करता है, उसके बजाए बस 0 देता है।

संबंधित मुद्दे