2012-04-26 12 views
6

वापस करना चाहिए, मुझे लगता है कि मैं खुद को एक ठोस वर्ग के बजाय एक इंटरफेस वापस करने के लिए सहमत हूं।क्या मुझे सूची या ArrayList

कारण सरल है, मैं ढीला युग्मन चाहता हूं।

लेकिन क्या अन्य प्रभाव या व्यापार बंद होंगे?

उत्तर

5

सूची या ऐरेलिस्ट जैसे प्रकारों के लिए कोई संकलन नहीं होना चाहिए और आपकी वापसी सूची Code to an interface को बढ़ावा देने वाली सूची होनी चाहिए।

आप अपने स्वयं को प्रतिबंधित कर पाएंगे, इसलिए यह CopyOnWriteArrayList जैसे Concurrency पैकेज से था और आप addIfAbsent जैसी विधियों का उपयोग कर रहे थे जिन्हें सूची इंटरफ़ेस में परिभाषित नहीं किया गया है।

तो अगर आप ArrayList या कहें कि आप API का उपयोग कर सकते हैं जो अनुबंध (List इंटरफेस) में परिभाषित नहीं कर रहे हैं के लिए कोई ठोस कार्यान्वयन वापसी है, लेकिन फिर आप विशिष्ट कार्यान्वयन से ArrayList से LinkedList के लिए और (कुछ को changeing में प्रतिबंधित कर रहे हैं), क्योंकि आपके एपीआई का उपयोग करने वाले प्रत्येक व्यक्ति को आपके बदलावों के अनुसार बदलना होगा, मुझे लगता है कि मुझे लगता है कि बहुत कुछ है।

4

इम्प्लिकेशंस यह है कि आप ArrayList के तरीकों को कॉल करने में सक्षम नहीं होंगे जो लौटाई गई वस्तुओं के लिए सूची इंटरफ़ेस के तरीके नहीं हैं।

लेकिन यदि ऑब्जेक्ट एक ऐरेलिस्ट है तो आप एक कास्ट कर सकते हैं।

2

ठोस वर्ग को वापस करने का एकमात्र कारण यह हो सकता है कि कॉलर को इस ठोस कार्यान्वयन या संभवतः, ठोस कार्यान्वयन पर अतिरिक्त इंटरफेस के बारे में पता होना चाहिए। उदाहरण के लिए, एंड्रॉइड में, आपको अक्सर ऐरेलिस्ट का उपयोग करना पड़ता है क्योंकि ढांचे को सामान्य सूची इंटरफ़ेस को व्यवस्थित तरीके से क्रमबद्ध करने का तरीका नहीं पता है।

15

अपने इंटरफ़ेस के लिए उपयुक्त सबसे सामान्य प्रकार को वापस करना सबसे अच्छा है।

यदि कोई कारण है कि ArrayList आपके द्वारा लौटाए जा रहे डेटा के लिए मूल रूप से उपयुक्त क्यों है तो आपको इसका उपयोग करना चाहिए। आमतौर पर सूची ठीक है, लेकिन आप भी अगर लौटे मूल्यों स्वाभाविक अव्यवस्थित हैं संग्रह उपयोग करने पर विचार हो सकता है:

Diagram of Java collections hierarchy

+2

तस्वीर के लिए +1 :) –

+1

आरेख के लिए धन्यवाद –

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