List.toArray() जेनेरिक क्यों नहीं है? आपको इस प्रकार को तर्क के रूप में क्यों देना चाहिए (और आमतौर पर एक नया खाली उदाहरण बनाते हैं)?List.toArray() जेनेरिक क्यों नहीं है?
public Object[] toArray()
http://docs.oracle.com/javase/7/docs/api/java/util/List.html#toArray()
अद्यतन: मैं के बाद से सीखा है कि सामान्य सरणी निर्माण की अनुमति नहीं है, लेकिन मुझे विश्वास है कि यह होना चाहिए। क्या कोई कारण है कि इसकी अनुमति नहीं है?
Main.java:28: error: generic array creation
T[] ret = new T[size()];
अद्यतन: ठीक है, मैं विश्वास है कि यह जवाब है: क्योंकि
http://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays
नहीं यह सीधे प्रासंगिक है, लेकिन परोक्ष रूप से प्रासंगिक है। new T[size()]
के साथ स्वाभाविक रूप से गलत कुछ भी नहीं है, जहां MyList<String>
new String[size()]
में बदल दिया जाएगा, लेकिन टी स्वयं पैरामीटरयुक्त प्रकार हो सकता है। तो यदि आप MyList<Set<Integer>>
बनाना चाहते थे, तो T
Set<Integer>
के बराबर होगा और संकलक new Set<Integer>[size()]
बनाने का प्रयास करेगा, जो लौटने पर लिंक में समस्या का कारण बन सकता है। किसी ने इन पंक्तियों के साथ जवाब देने का प्रयास किया लेकिन उस उत्तर को तब से हटा दिया गया है, इसलिए मैं भूल गया कि यह कौन था।
'toArray' का एक अधिभारित संस्करण है जो जेनेरिक –
थोड़ा और नीचे स्क्रॉल करें। – SLaks
@ Dgrin91 लेकिन आपको पैरामीटर के रूप में एक सरणी उदाहरण में पास करना होगा, जो ओपी पूछ रहा था। पिछली संगतता बनाए रखने के लिए – ajb