2011-08-30 15 views
33

वसंत ढांचा विधियों का उपयोग करता है जहां आप जितना चाहें उतने तर्क पारित कर सकते हैं।असीमित तर्कों के साथ जावा विधि

मैं एक ऐसा फ़ंक्शन लिखना चाहता हूं जो असीमित डेटा भी ले सकता है। इस सुविधा को कैसे कहा जाता है ताकि मैं इसके बारे में पढ़ सकूं। या मैं इसे कैसे परिभाषित कर सकता हूं?

बहुत बहुत धन्यवाद।

+0

किस वर्ग में यह विधि है? हो सकता है कि स्थैतिक मुख्य (स्ट्रिंग [] तर्क) – jjchiw

+0

परिभाषित करें "डेटा की असीमित मात्रा"। – pap

उत्तर

93

इसे varargs कहा जाता है।

यह किसी भी तर्क को लेने के लिए एक विधि की अनुमति देता है। वे विधि में एक सरणी के रूप में सुलभ हैं:

public void foo(String... args) { 
    for (String arg : args) { 
     // do smth with arg. 
    } 
} 

यह syntactic sugar है। संकलक सरणी निर्माण छुपाता है, इसलिए बजाय

bar.foo(new String[] {"1", "2", "3"}); 

आप

bar.foo("1", "2", "3"); 
4

Bozho के जवाब जोड़ने के लिए, आप भी varargs से पहले अपने विधि में अन्य तर्कों हो सकता लिखें:

// foo(13, "foo", "bar", "baz"); 
// will print: 
// 13 - |foo||bar||baz| 
public void foo(int a, String... b) { 
    System.out.println(a + " - "); 

    for (String c : b) { 
     System.out.print("|" + c + "|"); 
    } 
} 

हालांकि आप के बाद एक अलग प्रकार के तर्क नहीं हो सकता है। ये काम नहीं करते:

public void bar(String... b, int b); 
public void foo(int a, String... b, int b); 
संबंधित मुद्दे