2011-06-14 10 views
22

मैं doInBackground(Params... params)AsyncTask के doInBackground (पैरामीटर ... पैरामीटर)

बात के इस प्रकार कहा जाता है में पैरामीटर वाक्य रचना के साथ अपरिचित हूँ, और मैं इसे कैसे उपयोग करते हैं?

+2

यह आप कैसे पैरामीटर काम का एक बेहतर समझ दे देंगे: http: // डेवलपर। android.com/reference/android/os/AsyncTask.html – dymmeh

+0

यहां पूरा विवरण पढ़ें: http://stackoverflow.com/questions/6053602/what-arguments-are-passed-into-asynctaskarg1-arg2-arg3/6053673# 6053673 –

उत्तर

55

देवा और VVV के रूप में कहा है, कि "varargs" कहा जाता है। प्रभावी ढंग से, कोड की निम्न दो पंक्तियों के बराबर हैं:

public void makeLemonade(String[] args) { 

और

public void makeLemonade(String... args) { 

विधि के अंदर कोड ही होगा, लेकिन जब यह कहा जाता था, वे अलग तरह से कहा जा सकता है। जबकि दूसरा एक की विधि हस्ताक्षर करने के लिए (एक ग्रहण) तर्कों की अनंत संख्या 0 हो सकता था

makeLemonade(new String[]{"lemon1", "lemon2", "lemon3"}); 

, लेकिन वे सभी स्ट्रिंग युक्तियों की आवश्यकता होगी: पहले इस तरह कहा जा करने की आवश्यकता होगी। निम्नलिखित कॉल की सभी काम करेगा:

makeLemonade("lemon1"); 
makeLemonade("lemon4", "lemon7", "lemon11", "lemon12"); 
makeLemonade(); 
// ... etc ... 

दोनों के बीच एक सूक्ष्म अंतर नहीं है आपको लगता है कि makeLemonade() आप varargs उपयोग कर रहे हैं कॉल कर सकते हैं कानूनी तौर पर यहाँ।

+4

बिल्कुल सही स्पष्टीकरण। धन्यवाद। – dfetter88

+0

@Travis आप कैसे इंगित करते हैं कि कोई तर्क पारित नहीं किया जाना है? क्या आपको यादृच्छिक प्रकार चुनना है? –

+0

यह इंगित करने के लिए कि कोई तर्क पारित नहीं किया जाना चाहिए, आपके विधि हस्ताक्षर में कोई पैरामीटर शामिल नहीं होगा, इसलिए ऊपर "जहां आप" सार्वजनिक शून्य बनावट (स्ट्रिंग ... तर्क) "देखते हैं, तो आप इसके बजाय" सार्वजनिक शून्य बनावट() ​​" । यह संकलक को बताता है कि कोई तर्क की अनुमति नहीं है। यदि आप 0 तर्कों के साथ विधि को कॉल करना चाहते हैं, तो यह पूरी तरह मान्य है, आप बस ऐसा करेंगे, और "makeLemonade()" पर कॉल करें। – Travis

3

वे कहा जाता है वार args .. बस एक सरणी की तरह .. यू से अधिक आइटम पारित कर सकते हैं और सिर्फ params[0] तरह का उपयोग .. आदि ..

1

Params... params एक vararg का प्रतिनिधित्व करता है। यह जे 2 एसई 5.0 में जोड़ा गया था। इसका मतलब है कि आप बहस के किसी भी संख्या पारित कर सकते हैं या आप कह सकते हैं तर्क पैरामीटर की सरणी [0]

धन्यवाद दीपक