मेरे जावा कोड में मैं अक्सर बहुत आसान method(Class... args)
varargs का उपयोग करता हूं। जहां तक मुझे पता है, वे आपको Class
ऑब्जेक्ट्स या Class[]
की सरणी पास करने की अनुमति देते हैं। चूंकि मैं अक्सर जावा संग्रह कक्षाओं का उपयोग करता हूं, इसलिए मैं दोनों के बीच संगतता की कमी से निराश हूं। नतीजतन, मैं collection.toArray()
कर रहा हूं, लेकिन इसमें कुछ प्रकार के सुरक्षा मुद्दे हैं।जावा varargs समर्थन संग्रह क्यों नहीं करता है?
तो अब सवाल के लिए: क्यों जावा Iterable<T>
के उदाहरणों को vararg तर्क के रूप में अनुमति नहीं देता है, जब तक कि सामान्य प्रकार T...
vararg के प्रकार को फिट करता है? क्या हर कोई सूचियों, सेट इत्यादि का हर समय उपयोग नहीं करता है? संग्रह से vararg में रूपांतरण प्रदान करने के लिए कोई आसान, प्रकार-सुरक्षित तरीका है?
यह तकनीकी दृष्टि से प्रश्न का उत्तर देता है, लेकिन एक डेवलपर के रूप में, मुझे अभी भी लगता है कि जब भी मैं संग्रह और सादा वस्तुओं दोनों का उपयोग करना चाहता हूं तो एक सहायक विधि की आपूर्ति करना मूर्खतापूर्ण है। बेशक, तथ्य यह है कि हमारे पास संग्रह और varargs कुछ साल पहले की तुलना में पहले ही राहत है। – tb189
@ द एलिट जेंटलमैन: मैं बस एक साधारण 'foo' पर' frobnicate' का उपयोग करना पसंद करता हूं। [स्रोत] (http://www.catb.org/jargon/html/F/frobnicate.html)। –
@ tb189: क्यों एक "सहायक विधि"? आप दो अलग-अलग, टाइप-वार असंबद्ध प्रकार के तर्क स्वीकार करने के लिए एक विधि चाहते हैं। यह * बिल्कुल * समस्या है जो ओवरलोडिंग को संभालने के लिए डिज़ाइन किया गया है। –