2010-02-25 14 views
93

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

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

उत्तर:

+7

अपने गृहकार्य के बाद से, हम आपका प्रश्न नहीं जानना चाहते हैं, हम सिर्फ यह जानना चाहते हैं कि आप सीख रहे हैं। – HDave

उत्तर

205

यह सही है varargs। आप the Oracle guide on 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. 
+1

क्या विभिन्न प्रकार के परमटेर करना संभव है? जैसे (स्ट्रिंग ... strs, int ... ints)। किसी भी क्रम में किसी भी प्रकार के तर्क के बारे में क्या? – trusktr

+4

@trusktr: यदि आप कोई ऑब्जेक्ट चाहते हैं, तो बस 'ऑब्जेक्ट ...' का उपयोग करें। – BalusC

+1

क्या यह प्राइमेटिव के साथ भी काम करता है? – trusktr

11

हाँ, यह संभव है:

public void myMethod(int...numbers) { ... } 
10
Variable number of arguments 

यह एक विधि के लिए तर्क के परिवर्तनशील पारित करने के लिए संभव है। हालांकि, वहाँ कुछ प्रतिबंध हैं:

  • मापदंडों के चर संख्या सब एक ही प्रकार
  • वे विधि के भीतर एक सरणी
  • वे विधि
  • के अंतिम पैरामीटर होना चाहिए के रूप में इलाज कर रहे हैं होना चाहिए

    :

इन प्रतिबंधों को समझने के लिए विधि पर विचार, निम्नलिखित कोड का टुकड़ा में, पूर्णांकों की एक सूची में सबसे बड़ा पूर्णांक वापस जाने के लिए इस्तेमाल किया

स्रोत Oracle सर्टिफिकेट एसोसिएट जावा SE 7 प्रोग्रामर अध्ययन गाइड 2012

2

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

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("..."); }

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

0

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

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

कर सकते हैं कृपया उत्तर देने के लिए लिंक का उपयोग न करें। लिंक मर सकते हैं लेकिन यदि आप अपनी पोस्ट में वास्तविक उत्तर शामिल करते हैं तो भविष्य की पीढ़ियों के लिए यह खोज योग्य होगा, अगर किसी के पास एक ही समस्या है। – Moseleyi

संबंधित मुद्दे