बदलना कोटलीन ऐरे को Java varargs


121

मैं अपने कोटलिन Arrayको एक varargs Java में कैसे बदल सकता हूँ String[]?

val angularRoutings = 
    arrayOf<String>("/language", "/home")

// this doesn't work        
web.ignoring().antMatchers(angularRoutings)

कैसे एक वैरिएग विधि पैरामीटर के लिए एक ArrayList पास करने के लिए?

जवाबों:


231

आपको प्रसार ऑपरेटर का उपयोग करना चाहिए जो इस तरह दिखता है: *
प्रसार ऑपरेटर को सरणी तर्क के सामने रखा जाना चाहिए:

antMatchers(*angularRoutings)

अधिक जानकारी के लिए, दस्तावेज देखें :

जब हम vararg-function कहते हैं , तो हम एक-एक करके तर्कों को पास कर सकते हैं, जैसे asList(1, 2, 3), या, यदि हमारे पास पहले से ही एक सरणी है और फ़ंक्शन में इसकी सामग्री को पास करना चाहते हैं, तो हम प्रसार ऑपरेटर का उपयोग करते हैं (साथ सरणी को उपसर्ग करें *):

कृपया ध्यान दें कि प्रसार ऑपरेटर केवल सरणियों के लिए परिभाषित किया गया है, और इसका उपयोग सीधे सूची में नहीं किया जा सकता है। जब एक सूची से निपटने के लिए, उदाहरण के toTypedArray()लिए इसे एक सरणी में बदलने के लिए उपयोग करें :

 *list.toTypedArray()

और वापस कैसे कन्वर्ट करें?
लैकस

@ इकास का मतलब "कन्वर्ट बैक" से क्या है? एक varargअलग-अलग तत्वों की उम्मीद है, और *arrayKotlin तरह से कहते हैं "उस उद्देश्य के लिए अलग-अलग तत्वों के रूप में इस सरणी का इलाज है।" vararg-Function के भीतर varargपैरामीटर वैसे भी एक एरे होगा। व्यक्तिगत तत्वों को एक सरणी में बदलने के लिए जिसका आप उपयोग कर सकते हैं arrayOf(...), लेकिन आपको इस मामले में इसकी आवश्यकता नहीं है।
डारियो सीडल

3
ध्यान दें कि इसमें बहुत उच्च-प्रदर्शन वाला जुर्माना है। sites.google.com/a/athaydes.com/renato-athaydes/posts/... varargs, या जाँच medium.com/@BladeCoder/...
svkaka

क्या प्रसार ऑपरेटर का उपयोग करने से बचने और किसी सरणी या सूची को किसी विधि से पास करने का कोई तरीका है जो स्वीकार करता है vararg?
वैकलून

@DarioSeidl उनका मतलब है: क्या होगा अगर हमारे पास स्ट्रिंग के वेरिएग हैं, और हम एक ऐसे फ़ंक्शन को पास करना चाहते हैं, जो स्ट्रिंग की एक सरणी की उम्मीद करता है?
Android डेवलपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.