java - एक विधि के लिए जावा परिवर्तनीय संख्या या तर्क




arguments parameter-passing (4)

एक विधि घोषित करना संभव है जो चरम संख्याओं की अनुमति देगा?

परिभाषा में इस्तेमाल प्रतीकवाद क्या है जो इंगित करता है कि विधि को पैरामीटर की एक चर संख्या की अनुमति देनी चाहिए?

उत्तर: varargs


यदि आप विभिन्न प्रकार के तर्कों का उपयोग कर सकते हैं, तो इसका उपयोग करें:

public void foo(Object... x) {
    String first    =  x.length > 0 ? (String)x[0]  : "Hello";
    int duration    =  x.length > 1 ? Integer.parseInt((String) x[1])     : 888;
}   
foo("Hii", ); 
foo("Hii", 146); 

सुरक्षा के लिए, इस तरह का उपयोग करें:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }

इस दृष्टिकोण का मुख्य दोष यह है कि यदि वैकल्पिक पैरामीटर विभिन्न प्रकार के होते हैं तो आप स्थैतिक प्रकार की जांच खो देते हैं। कृपया, अधिक विविधताएं देखें।


यह सही है। आप varargs पर ओरेकल गाइड में इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं।

यहां एक उदाहरण दिया गया है:

void foo(String... args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}

जिसे कहा जा सकता है

foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.

हाँ जावा विधि पैरामीटर में vargs की अनुमति देता है।

class  Varargs{public int add(int... numbers){ int result = 1; for(int number: numbers){result= result+numbers;  }  return result; }}

हाँ, यह मुमकिन है:

public void myMethod(int...numbers) { ... }






variadic-functions