क्या यह एक विधि घोषित करना संभव है जो मापदंडों की एक चर संख्या की अनुमति देगा?
परिभाषा में प्रयुक्त प्रतीकवाद क्या इंगित करता है कि विधि को मापदंडों की एक चर संख्या की अनुमति देनी चाहिए?
उत्तर: वैराग
क्या यह एक विधि घोषित करना संभव है जो मापदंडों की एक चर संख्या की अनुमति देगा?
परिभाषा में प्रयुक्त प्रतीकवाद क्या इंगित करता है कि विधि को मापदंडों की एक चर संख्या की अनुमति देनी चाहिए?
उत्तर: वैराग
जवाबों:
यह सही है। आप इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं 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.
Object...
।
varargs.length
Variable number of arguments
एक विधि के लिए चर संख्याओं को पारित करना संभव है। हालाँकि, कुछ प्रतिबंध हैं:
इन प्रतिबंधों को समझने के लिए, विधि पर विचार करें, निम्नलिखित कोड स्निपेट में, पूर्णांक की सूची में सबसे बड़ा पूर्णांक वापस करने के लिए उपयोग किया जाता है:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
स्रोत ओरेकल प्रमाणित एसोसिएट जावा एसई 7 प्रोग्रामर स्टडी गाइड 2012
विभिन्न प्रकार के तर्कों के लिए, 3-बिंदु हैं :
public void foo(Object... x) {
String myVar1 = x.length > 0 ? (String)x[0] : "Hello";
int myVar2 = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
फिर इसे कॉल करें
foo("Hii");
foo("Hii", 146);
सुरक्षा के लिए, इस तरह का उपयोग करें:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
इस दृष्टिकोण का मुख्य दोष यह है कि यदि वैकल्पिक पैरामीटर विभिन्न प्रकार के हैं तो आप स्थैतिक प्रकार की जाँच खो देते हैं। कृपया, अधिक विविधताएँ देखें ।
यप ... जावा 5 से: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
हाँ जावा vargs
विधि पैरामीटर में अनुमति देता है।
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}