सवाल मूल रूप से आत्म-व्याख्यात्मक है। मैं सरणी के लिए एक एपीआई नहीं ढूंढ पाया (इस Arrays के अलावा, लेकिन यह वास्तविक सरणी से निपटने के लिए स्थिर सहायक कार्यों का एक गुच्छा परिभाषित करता है)। यदि इसके लिए कोई कक्षा नहीं है, तो ऐसा लगता है कि एक सरणी Object
नहीं हो सकती है।एक सरणी एक आदिम प्रकार या एक वस्तु है (या पूरी तरह से कुछ और)?
हालांकि, इस तथ्य एक सरणी length
तरह सार्वजनिक क्षेत्रों और तरीकों कि यह .equals()
और .clone()
तरह आह्वान कर सकते हैं है कि सुझाव देने के लिए (बहुत दृढ़ता से) पूरा विपरीत लगते हैं।
अजीब प्रस्तुति और आदिम सरणी के व्यवहार के लिए स्पष्टीकरण क्या है?
एक नोट के रूप में, मैंने अभी एक सरणी के .clone()
विधि पर "ओपन इम्प्लीमेंटेशन" ग्रहण सुविधा का उपयोग करने की कोशिश की, उम्मीद है कि मैं यह देखने में सक्षम होगा कि यह तरीका कहां और कैसे परिभाषित किया गया था (क्योंकि यह int [] वस्तु से यह overrode), लेकिन यह वास्तव में अपने पूरे ग्रहण अप और दुर्घटना को फ्रीज करने का कारण बना ...
उत्कृष्ट उत्तर है! मैं अब समझता हूं कि मुझे अब कोई एपीआई या कुछ भी नहीं मिला। यह बहुत दिलचस्प है कि जेवीएम इन वर्गों को रनटाइम पर बनाता है। एक आखिरी सवाल हालांकि: यदि कोई सरणी किसी अन्य वस्तु की तरह किसी वर्ग का सदस्य है, तो प्रारंभिक कार्य कैसे कार्य करता है? यदि आप जो कह रहे हैं वह सटीक है और [] कक्षा के नाम का हिस्सा है, तो उन्हें एक निर्माता का उपयोग क्यों नहीं किया जाता है, यानी नया int [] (2) बनाम नई int [2]? – asteri
'int [2] 'वाक्यविन्यास सी से था, जिसे जावा ने करीब होने की कोशिश की। – irreputable
यह सबसे अधिक संभावना है कि जेवीएम में विशेष कोड है जो सरणी प्रारंभिकता को संभालने के लिए है जो मानक ऑब्जेक्ट इंस्टेंटेशन से काफी अलग है। – Matt