2012-01-15 12 views

उत्तर

11

पहले एक जावा 7 के बाद से ही मान्य है, और है

के बराबर
List<String> list = new ArrayList<String>(); 

यह केवल कम वर्बोज़ है।

तीसरा, जो

ArrayList<String> list = new ArrayList<String>(); 

के बराबर है और इस तरह सख्ती से एक दूसरे के बराबर है के लिए एक ही

आप पहले एक को प्राथमिकता देनी चाहिए, निम्नलिखित प्रश्न के जवाब में वर्णित कारणों के लिए: List versus ArrayList as reference type?

2

यहाँ टिप्पणी करने के लिए दो अंक हैं:

1. नया जावा 7 हीरा ऑपरेटर आप की अनुमति देता है दोनों तरफ टाइप पैरामीटर निर्दिष्ट किए बिना एक सामान्य वर्ग को तुरंत चालू करने के लिए। तो इन दो बराबर हैं:

ArrayList<String> list = new ArrayList<String>(); 
ArrayList<String> list = new ArrayList<>(); 

2. अधिक महत्वपूर्ण बात यह है पहले दो instantiations के बीच अंतर है।

List<String> list = new ArrayList<>(); 

आप तथ्य यह है कि ArrayListList की एक उप-प्रकार और इसलिए काम मान्य है प्रयोग कर रहे हैं: दूसरा एक स्पष्ट है:

ArrayList<String> list = new ArrayList<String>(); 

पहले एक में। हालांकि, नए list ऑब्जेक्ट पर आपके पास केवल List में शामिल विधियों का सबसेट है (क्योंकि आपकी ऑब्जेक्ट को List के रूप में घोषित किया गया है), लेकिन कार्यान्वयन ArrayList में मौजूद है। इसे ऑब्जेक्ट उन्मुख प्रोग्रामिंग में पॉलीमोर्फिज्म कहा जाता है और आपको विभिन्न अलग-अलग कार्यक्षमताओं को प्रदान करने के लिए अभिभावक की बजाय कक्षा के उप प्रकार का उपयोग करने की अनुमति देता है, जहां माता-पिता की अपेक्षा की जाती है।

4

तीन कुछ हद तक बराबर हैं:

List<String> list = new ArrayList<>(); 

ऊपर में, आप एक ऐसा वैरिएबल List इंटरफ़ेस जो String तत्वों में शामिल होंगे, और ठोस वर्ग ArrayList साथ यह दृष्टांत लागू करता है की घोषणा कर रहे हैं। इसके अलावा, आप जावा 7 के नए हीरे सिंटैक्स का उपयोग कर रहे हैं, बेटे को आपको <> के बीच String लिखना नहीं है।

ArrayList<String> list = new ArrayList<String>(); 

ऊपर में, आप ठोस वर्ग ArrayList के एक चर जो String तत्वों में शामिल होंगे, और ठोस वर्ग ArrayList "पारंपरिक" वाक्य रचना जो जनादेश का उपयोग करके इसे का दृष्टांत है कि आप String प्रकार निर्दिष्ट घोषणा कर रहे <> के बीच।

ArrayList<String> list = new ArrayList<>(); 

ऊपर में, आप ठोस वर्ग ArrayList जो String तत्वों में शामिल होंगे, और ठोस वर्ग ArrayList साथ यह दृष्टांत के एक चर घोषणा कर रहे। इसके अलावा, आप जावा 7 के नए हीरे सिंटैक्स का उपयोग कर रहे हैं, बेटे को आपको <> के बीच String लिखना नहीं है।

ध्यान रखें कि हीरा सिंटैक्स (<>) जावा के पिछले संस्करणों के लिए केवल जावा 7 और ऊपर काम करेगा, आप पारंपरिक वाक्यविन्यास (<the-type>) जेनरिक्स को तत्काल बनाने के लिए फंस गए हैं।

अंतिम दो रूप पूरी तरह से समकक्ष हैं; पहला फॉर्म थोड़ा अलग है क्योंकि आप यह निर्दिष्ट कर रहे हैं कि list वैरिएबल List प्रकार है और ArrayList टाइप नहीं है - और यह पसंदीदा फ़ॉर्म है, क्योंकि अच्छी वस्तु-उन्मुख प्रथाओं का निर्देश है कि आपको program to an 'interface', not an 'implementation' होना चाहिए।

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