ठीक है, मैं नहीं 100% इस बारे में निश्चित और अधिक गतिशील बंधन, जेनरिक और प्रकार विलोपन की तरह हूँ, लेकिन मैं इस varargs साथ कोई संबंध नहीं है लगता है, लेकिन।
"जावा में सरणी कॉन्वर्सेंट हैं, लेकिन जेनेरिक नहीं हैं। दूसरे शब्दों में, स्ट्रिंग [] ऑब्जेक्ट का एक उप प्रकार है [], लेकिन स्टैक स्टैक का उप-प्रकार नहीं है।"
स्रोत: http://algs4.cs.princeton.edu/13stacks/
तो अपने सवाल का जवाब देने, इस व्यवहार निर्दिष्ट दस्तावेज और उम्मीद है।
पुस्तक में: 'प्रभावी जावा' यहोशू बलोच इस तरह यह बताते हैं:
सरणी दो महत्वपूर्ण तरीकों से सामान्य प्रकार से भिन्न होते हैं। सबसे पहले, सरणी covariant हैं। यह डरावना ध्वनि शब्द का अर्थ यह है कि यदि सब सुपर का एक उप प्रकार है, तो सरणी प्रकार सब [] सुपर [] का एक उप प्रकार है। जेनेरिक, इसके विपरीत, परिवर्तनीय हैं: किसी भी दो अलग-अलग प्रकारों के लिए टाइप 1 और टाइप 2, सूची < टाइप 1 > न तो उपप्रकार है और न ही सूची < टाइप[जेएलएस, 4.10; Naftalin07, 2.5]। आपको लगता है कि इसका मतलब यह है कि जेनेरिक कम हैं, लेकिन तर्कसंगत रूप से यह सरणी है जो कम हैं।
और मैं उन सरणीओं के बारे में क्यों बात कर रहा हूं जिनसे आप पूछ सकते हैं? खैर, क्योंकि अंतराल अंततः सरणी बन जाएगा।
"पिछले रिलीज में, एक विधि जिसने मनमाने ढंग से मूल्यों को लिया है, आपको एक सरणी बनाने और विधि को आविष्कार करने से पहले मूल्यों को सरणी में रखना आवश्यक है।"
"यह अभी भी सच है कि कई तर्क एक सरणी में पारित किए जाने चाहिए, लेकिन varargs सुविधा स्वचालित हो जाती है और प्रक्रिया को छुपाती है।"
स्रोत: https://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html
मैं यहां जवाब दूंगा कि "उनके द्वारा उपयोग की जाने वाली हर संकलक के साथ हमेशा कम से कम कुछ विसंगतियां होती हैं जो" उनके द्वारा उपयोग की जाने वाली जटिल जटिलता में सभी प्रकार के अनुमान नियम हैं। " –
शायद: http://docs.oracle.com/javase/specs/jls/se8/html/jls-18.html#jls-18.5.1 और निम्न। – assylias