2012-07-27 7 views
14

विधि बिंदु परिभाषा के दौरान पैरामीटर के एक हिस्से के रूप में उपयोग किए जाने पर तीन बिंदु (...) क्या इंगित करते हैं?विधि बिंदु परिभाषा के दौरान पैरामीटर के एक हिस्से के रूप में उपयोग किए जाने पर तीन बिंदु (...) इंगित करते हैं?

इसके अलावा, क्या उन 3 बिंदुओं के प्रतीक के लिए कोई प्रोग्रामिंग शब्द है?

मैं एक कोड नमूने में देखा:

public void method1 (Animal... animal) { 
// Code 
} 

और इस विधि 2 स्थानों से बुलाया गया था। तर्क जबकि बुला पारित कर दिया है, हालांकि दोनों स्थितियों में अलग अलग था:

  1. वस्तुओं की सरणी Method1 लिए एक तर्क के रूप पारित हो जाता है (पशु ...) वर्ग पशु की

  2. वस्तु Method1 लिए एक तर्क के रूप में पारित (पशु ...)

तो, यह कुछ की तरह, अगर आप वाकई किसी सरणी या विधि के लिए एक तर्क के रूप में पूरे सरणी के एक भी तत्व से गुजर रहा हो जाएगा या नहीं, तो आप 3 का उपयोग विधि परिभाषा में पैरामीटर के एक हिस्से के रूप में बिंदुओं?

इसके अलावा, कृपया मुझे बताएं कि क्या उन 3 बिंदुओं के प्रतीक के लिए कोई प्रोग्रामिंग शब्द है।

उत्तर

16

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

इसका मतलब है कि आप जितना चाहें उतने प्रकार से गुजर सकते हैं।

यह वास्तव में इसे method1(Animal[] a) में अनुवाद करता है और आप उन्हें a[1] के रूप में संदर्भित करते हैं जैसे कि आप कोई अन्य सरणी करेंगे।

मैं निम्नलिखित है

Cat whiskers = new Cat(); 
Dog rufus = new Dog(); 
Dolphin flipper = new Dolphin(); 

method1(whiskers, rufus, flipper); // okay! 
method1(rufus); // okay! 
method1(); // okay! 
method1(flipper,new Parakeet()); // okay! 
4

इसका मतलब है कि विधि वस्तुओं लेकिन के उस प्रकार के किसी सरणी स्वीकार करता है, जब आप उस प्रकार अल्पविराम के द्वारा अलग की कई वस्तुओं से पारित है कि सरणी स्वचालित रूप से बनाया जाता है।

ध्यान रखें कि विधि हस्ताक्षर में दिए गए प्रकार के केवल एक vararg पैरामीटर हो सकते हैं, और vararg के बाद हस्ताक्षर में एक ही प्रकार का एक और तर्क नहीं हो सकता है (जाहिर है, कोई रास्ता नहीं होगा दोनों के बीच अंतर करने के लिए)।

1

इसका मतलब है कि शून्य या अधिक स्ट्रिंग ऑब्जेक्ट्स (या उनमें से एक सरणी) उस फ़ंक्शन के पैरामीटर (ओं) के रूप में पारित की जा सकती है।

शायद

:

x("foo", "bar"); 
x("foo", "bar", "baz"); 

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

  • कोई संबंधित समस्या नहीं^_^