java - Variable argument function ambiguity -


  सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) {System.out.println (मज़ेदार (2,3, 4)); } स्थिर इंसान मज़ेदार (int a, int b, int c) {return 1; } स्थिर इंट मज़े (इंट ... ए) {वापसी 0; }  

आउटपुट: 1

प्रश्न: उपरोक्त मामले में फ़ंक्शन मज़ेदार 1 फ़ंक्शन और नहीं दूसरा। किस आधार पर चयन किया गया है क्योंकि यह निर्धारित करने का कोई तरीका नहीं है कि उपयोगकर्ता वास्तव में कहां चाहते थे?

असल में विशिष्ट कॉल के लिए प्राथमिकता है कुछ और के अलावा, इसका मतलब है कि कम से कम तर्कों के लिए अनुकूल होना संभव है, निष्पादन समय पर बिना किसी सरणी का निर्माण करने से बचने।

JLS यह बहुत स्पष्ट नहीं करता है, लेकिन यह उस भाग में है निश्चित स्थितियों के बारे में बात करता है जो किसी अन्य पद्धति से अधिक विशिष्ट होता है अगर कुछ शर्तों में हो - और वे इस मामले में करते हैं असल में यह अधिक विशिष्ट है क्योंकि अधिक कॉल हैं जो varargs विधि के लिए मान्य होंगे, जैसे कि वहाँ समान पैरामीटर थे लेकिन पैरामीटर प्रकार स्वयं अधिक सामान्य थे।


Comments