एक सामान्य ढेर के कार्यान्वयन में में एक संदर्भ प्रकार सरणी के लिए, निम्न मुहावरा इस्तेमाल किया और किसी भी समस्या केकास्टिंग वस्तु [] जावा
public class GenericStack<Item> {
private int N;
private Item[] data;
public GenericStack(int sz) {
super();
data = (Item[]) new Object[sz];
}
...
}
हालांकि जब मैं निम्नलिखित की कोशिश, यह एक ClassCastException का कारण बनता है के बिना काम करता है
String[] stra = (String[]) new Object[4];
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
आप इसे कैसे समझाते हैं?
स्ट्रिंग आइटम से प्राप्त नहीं होता है, इस प्रकार कास्ट संभव नहीं है। – Piovezan
@Piovezan 'स्ट्रिंग' और' आइटम' एक ही पंक्ति में नहीं हैं। – Dukeling
'नया जेनेरिकस्टैक (10)' काम करता है लेकिन यदि आप 'स्ट्रिंग [] स्ट्रै = नया जेनेरिकस्टैक (10) आज़माते हैं।GetData(); '(संबंधित गेटटर को लागू करें), यह क्लासकास्ट अपवाद के साथ विफल रहता है। तो यह "वास्तव में" काम नहीं करता है, कास्ट जादुई तरीके से नहीं किया गया है। –