मैं रॉबर्ट सेडगेविक द्वारा Coursera पर एल्गोरिदम के व्याख्यान के माध्यम से जा रहा था। मैं थोड़ी उलझन में था जब श्री रॉबर्ट ने इंगित किया कि कोई जेनिक्स का उपयोग Arrays के साथ नहीं कर सकता क्योंकि इसकी अनुमति नहीं है। लेकिन संग्रह फ्रेमवर्क में ArrayList आंतरिक सरणी का उपयोग करता है और जेनेरिक डेटाटाइप्स allowed.I कहना है कि हम निम्न कर सकते हैं इसका मतलब यह कर रहे हैं:जावा संग्रह फ्रेमवर्क में आंतरिक रूप से ArrayList का प्रतिनिधित्व कैसे किया जाता है।
public class FixedCapacityStack<Item>{
private Item[] s;
private int N = 0;
public FixedCapacityStack(int capacity)
{ s = (Item[]) new Object[capacity];} //this hack
भी वह:
ArrayList<Integer> list = new ArrayList<Integer>();
एक हैक उन्होंने बताया कि इस था उल्लेख किया है कि यह एक बदसूरत हैक है और इससे बचा जाना चाहिए और यह संकलन के दौरान चेतावनी भी पैदा करता है।
मेरा प्रश्न है:
1.) कैसे तो ArrayList करता है आंतरिक रूप से विभिन्न जेनेरिक्स प्रकार का प्रतिनिधित्व?
2.) यदि (माना जाता है) वे उपरोक्त वर्णित हैक का उपयोग करते हैं तो क्यों हम चेतावनी नहीं देते हैं जब हम ArrayList के साथ एक प्रोग्राम संकलित करते हैं?
3.) क्या उपरोक्त उस कलाकार के अलावा कोई बेहतर तरीका है?
इससे मदद मिल सकती है: http://docs.oracle.com/javase/tutorial/java/generics/erasure.html – tony200910041
आप स्रोत को भी देख सकते हैं: http://grepcode.com/file/repository.grepcode .com/java/root/jdk/openjdk/7u40-b43/जावा/उपयोग/ArrayList.java/ – user432
'फिक्स्ड कैपेसिटीस्टैक' 'ArrayList' स्रोत कोड (पिछली टिप्पणी में लिंक) में मौजूद प्रतीत नहीं होता है - यह था इसके बजाय व्याख्यान से एक उदाहरण? – DNA