आपके मामले में varargs बस ठीक है। आपको वास्तव में उन पथों की एक सरणी बनाने की आवश्यकता नहीं है जिन्हें आप आयात करेंगे क्योंकि आपके पास importFrom
विधि के साथ उन्हें पास करने के अलावा इन पथों के साथ कुछ भी नहीं करना है।
varargs कार्यक्षमता आपको एक-एक विधि के मूल्यों को संग्रहित करने के उद्देश्य से पूरी तरह से सरणी बनाने के लिए सहेजती है, जो आप यहां दिखाई देते हैं।
BTW, आप अभी भी एक सरणी में पारित कर सकते हैं अगर आप
public class VarargsDemo {
public static void f(String... args) {
for (String s: args) {
System.out.println(s);
}
}
public static void main(String[] args) {
String[] english = new String[]{"one", "two", "three"};
f(english);
f("uno", "dos", "tres");
}
}
करना चाहते हैं क्योंकि व्यवहार में ही है, फर्क एक (शायद छोटे) क्या आप विधि चाहते हैं के प्रश्न के नीचे आता है "कहना" के लिए हस्ताक्षर। जब आप एक स्पष्ट सरणी पैरामीटर लेने के लिए कोई विधि घोषित करते हैं, तो यह लगभग है जैसे आप तनाव देना चाहते हैं कि आप किसी सरणी ऑब्जेक्ट पर काम करना चाहते हैं, जो विधि के बाहर परिभाषित किया गया है और विधि के बाहर इसका अस्तित्व और महत्व है, और एक जिसमें, शायद, अनुक्रमण सूचकांक जैसे संचालन। Varargs के साथ विधि घोषित करते समय, जैसा कि आप कह रहे हैं "बस मुझे वस्तुओं का एक गुच्छा दें"।
फिर फिर, यह सच नहीं होना चाहिए; JVM अंतर को नहीं जानता है, यह देखता है कि रन टाइम पर एक सरणी है। कई प्रोग्रामर विधि हस्ताक्षर के इरादे पर विभाजित बाल परेशान नहीं करेंगे। Varargs कॉल को सुविधाजनक बनाने के बारे में सब कुछ है।
उस ने कहा, मुख्य सीमा varargs की सीमा यह है कि ऐसा पैरामीटर विधि का अंतिम भाग होना चाहिए। आपके मामले में यह कोई समस्या नहीं है, लेकिन आम तौर पर यह विचार करने के लिए कुछ है।
स्रोत
2011-10-31 08:38:50
आप अभी भी एक varargs विधि में एक सरणी पास कर सकते हैं, यह वही व्यवहार करेगा। –