2015-08-26 12 views
8

मैं पैरामीटर की एक सूची को पास करने के लिए संघर्ष कर रहा हूं जिसमें "स्ट्रिंग ..." पैरामीटर की आवश्यकता है।स्ट्रिंग करने के लिए <String> पासिंग सूची ... पैरामीटर

क्या कोई मेरी मदद कर सकता है?

// How to put names into dummyMethod? 
List<String> names = getNames(); 

public void dummyMethod(String... parameter) { 
    mInnerList.addAll(Arrays.asList(parameter)); 
} 

उत्तर

10

को सूची में परिवर्तित कर देंगे आप एक स्ट्रिंग सरणी List<String> कन्वर्ट करने के लिए होगा dummyMethod का 'varargs' पैरामीटर। आप पैरामीटर के रूप में एक अतिरिक्त सरणी के साथ toArray का उपयोग कर सकते हैं। अन्यथा, विधि एक Object[] वापस आती है और यह संकलन नहीं होगा:

List<String> names = getNames(); 
dummyMethod(names.toArray(new String[names.size()])); 
2

पास स्ट्रिंग सरणी (String[]) विधि के अंदर। आपको अपनी सूची को ऐरे में परिवर्तित करना होगा और फिर इसे पास करना होगा।

if (names != null) { 
    dummyMethod(names.toArray(new String[names.size()])); 
} 
+0

'toArray()' एक 'वस्तु वापस आ जाएगी [] '- यह संकलित नहीं होगा। – Glorfindel

+0

मेरा बुरा, मैंने अपना जवाब अपडेट कर दिया है। –

0

यह vararg पैरामीटर है और इसके लिए आपको सरणी पास करनी चाहिए। ArrayList काम नहीं करेगा। विधि को पार करने से पहले आप इस सूची को सरणी में बदल सकते हैं।

String a = new String[names.size]; 
list.toArray(a) 
4

आप क्या कर सकते हैं निम्नलिखित:

dummyMethod(names.toArray(new String[names.size()]) 

इस क्रम में इसका इस्तेमाल करने में सरणी

+0

'toArray()' एक ऑब्जेक्ट [] 'वापस करेगा - यह संकलित नहीं होगा। – Glorfindel

1

के बाद से आप बाद में एक सूची के रूप में पैरामीटर पार्स, मैं करने के लिए विधि बदलने का सुझाव:

public void dummyMethod(List<String> parameter) { 
    mInnerList.addAll(parameter); 
} 

अतिरिक्त लागत से बचने के लिए ।

हालांकि, अगर आप इस विधि का उपयोग करने के लिए "के रूप में यह है" चाहते हैं, तो आप ऐसा बुलाना चाहिए: के रूप में Glorfindel his answer में पता चलता है,

dummyMethod(names.toArray(new String[names.size()])); 

के बाद से तीन बिंदुओं मतलब है कि आप कॉल कर सकते हैं कई स्ट्रिंग्स या स्ट्रिंग्स की सरणी का उपयोग करने वाली विधि (अधिक जानकारी के लिए this post देखें)।

+1

'toArray()' एक ऑब्जेक्ट [] 'वापस करेगा - यह संकलित नहीं होगा। – Glorfindel

+0

धन्यवाद। toArray() (और कुछ अतिरिक्त कास्टिंग) यह किया था! "स्ट्रिंग ..." पैरामीटर वाला तरीका लाइब्रेरी का हिस्सा है, इसलिए मैं इसे बदलने से बचने की कोशिश कर रहा था। लेकिन यह हल करने का मेरा अगला प्रयास होता। – RuNaWaY87

+0

@Glorfindel मैं आपका जवाब देखने के बाद टिप्पणी करते समय अपना जवाब अपडेट कर रहा था। – vefthym

1

वर-आर्ग वास्तव में एक सरणी स्वीकार करता है और आप इसे पसंद का उपयोग कर सकते हैं:

dummyMethod(names.toArray(new String[names.size()])); 

यहां एक नमूना कोड है:

List<String> names = new ArrayList<>(); 
names.add("A"); 
names.add("B"); 
dummyMethod(names.toArray(new String[names.size()])); 
संबंधित मुद्दे