जावा में एक विधि के अधिकतम पैरामीटर क्या हो सकते हैं और क्यों?
मैं 64-बिट विंडोज सिस्टम पर जावा 1.8 का उपयोग कर रहा हूं।
इस बारे में स्टैकऑवरफ्लो के सभी जवाबों में कहा गया है कि तकनीकी सीमा 255 मापदंडों की वजह से बताए बिना क्यों है।
सटीक होने के लिए, स्थैतिक के लिए 255 और गैर-स्थैतिक के लिए 254 ( this
इस मामले में 255 वां होगा) तरीके।
मैंने सोचा कि इसे किसी प्रकार के विनिर्देश में वर्णित किया जा सकता है और यह कि केवल एक सांख्यिकीय रूप से परिभाषित अधिकतम पैरामीटर की अनुमति है।
लेकिन यह केवल int
और सभी 4-बाइट प्रकारों के लिए मान्य था । मैंने long
मापदंडों के साथ कुछ परीक्षण किए , और मैं केवल उस मामले में 127 मापदंडों की घोषणा करने में सक्षम था।
String
मापदंडों के साथ , मुझे परीक्षण से कटौती की गई अनुमत संख्या 255 है (यह हो सकता है क्योंकि संदर्भ आकार जावा में 4 बाइट्स है)।
लेकिन चूंकि मैं 64-बिट सिस्टम का उपयोग कर रहा हूं, इसलिए संदर्भ आकार 8 बाइट्स चौड़ा होना चाहिए और इसलिए String
मापदंडों के साथ अधिकतम अनुमत संख्या 127 होनी चाहिए, long
प्रकारों के समान ।
यह सीमा कैसे लागू होती है?
क्या विधि के स्टैक आकार के साथ सीमा का कोई लेना देना है ?
नोट: मैं वास्तव में किसी भी विधि में इन कई मापदंडों का उपयोग नहीं करने जा रहा हूं, लेकिन यह प्रश्न केवल सटीक व्यवहार को स्पष्ट करने के लिए है।
<= 4
। अधिक कुछ भी संभवतः एक वस्तु में लपेटा जाना चाहिए।