java - Should we use type cast for the object.toArray()? -


  स्ट्रिंग [] a = c.toArray (नया स्ट्रिंग [0]);  

सबसे पहले: क्या मुझे यहाँ डाली गई प्रकार की ज़रूरत है? (मुझे लगता है कि हमें (स्ट्रिंग []) c.toArray (); की तरह लिखना चाहिए, लेकिन मैंने इसे बस कास्ट कोड के उपयोग के बिना सिर्फ c.toArray () के रूप में देखा है। यह मान्य है?

दूसरा: इसके अलावा हम क्यों new string [0]

यदि आप प्री-जेनेरिक जावा का उपयोग कर रहे हैं, तो आमतौर पर केवल टाइप की ज़रूरत होती है। अगर आप Collection.toArray (T []) के लिए डॉक्स देखते हैं, तो देखें कि यह जानता है कि जिस सरणी को लौटाया गया है वह उसी तरह के सरणी के प्रकार के समान है। तो, आप लिख सकते हैं:

  सूची & lt; स्ट्रिंग & gt; list = new ArrayList & lt; स्ट्रिंग & gt ; (); List.add ("Foo"); स्ट्रिंग [] सरणी = list.toArray (नया स्ट्रिंग [0]);  

आप संग्रह को बताते हुए सरणी में पास यदि आप एक सूची & lt; OutputStream & gt; है, तो आप उस कन्वर्ट को एक Object [] में बदल सकते हैं। , एक स्ट्रीम [] या बाइटए RreOutputStream [] - जाहिर है बाद वाले केवल काम करने जा रहे हैं यदि प्रत्येक तत्व वास्तव में है a ByteArrayOutputStream । इसका भी अर्थ यह है कि यदि आपके पास पहले से ही सही प्रकार और आकार की एक सरणी है, तो सामग्री को एक नई सरणी बनाने के बजाय उस में कॉपी किया जा सकता है।

इस उत्तर का एक पिछले संस्करण गलत था, - यदि आप अधिभार का उपयोग करते हैं जो किसी भी पैरामीटर नहीं लेता है, तो आप हमेशा एक वस्तु [] को वापस प्राप्त कर सकते हैं जो डाली नहीं जा सकती:

  सूची से & lt; स्ट्रिंग & gt; सूची = नया अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); list.add ( "फू"); // toArray एआरएआर के प्रकार को नहीं जानते / बनाने के कारण / प्रकार की एरर वस्तु [] array = list.toArray (); // यह कलाकार निष्पादन समय में विफल हो जाएगा स्ट्रिंग [] stringArray = (स्ट्रिंग []) arrray;  

संपादित करें: मैंने अभी देखा है कि यह भी एर्डेमू के उत्तर में उल्लिखित है, लेकिन यहां इसे यहां भी नहीं पहुंचा सकते हैं:)


Comments

Popular posts from this blog

c# - PInvoke of NetUserAdd returns 24 -

c# - XMLDocument.Validate Error: System.InvalidOperationException : The XmlSchemaSet on the document is either null or has no schemas in it -