का उदाहरण है, तो मेरे पास Object
है जिसमें कभी-कभी List<Object>
होता है। मैं इसे instanceof
के साथ जांचना चाहता हूं, और यदि ऐसा है, तो इसमें कुछ तत्व जोड़ें।यदि ऑब्जेक्ट सूची <Object>
void add(Object toAdd) {
Object obj = getValue();
if (obj instanceof List<?>) {
List<?> list = obj;
if (list instanceof List<Object>) { // Error
((List<Object>) list).add(toAdd);
} else {
List<Object> newList = new ArrayList<Object>(list);
newList.add(toAdd);
setValue(newList);
}
return;
}
throw new SomeException();
}
और यह अगर यह instanceof List<Object>
है क्योंकि जावा परवाह नहीं करता और <>
में टाइप मिट मैं जांच नहीं कर सकता कहते हैं। क्या इसका मतलब है कि मुझे हर बार नई ऐरेलिस्ट बनाना है? या यह जांचने का कोई तरीका है, उदाहरण के लिए। प्रतिबिंब के साथ?
कोड का यह टुकड़ा क्या है? – poitroae
इसे जावा में टाइप एरर के रूप में जाना जाता है http://stackoverflow.com/questions/339699/java-generics-type-erasure-when-and-what-happens –
@ माइकल यह सांप्यामल के चारों ओर एक रैपर होने जा रहा है। अगर मेरे पास yaml की एक सूची है, तो यह जावा में कुछ सूची में इसका विश्लेषण करेगी। अगर मैं इस सूची में कोई तत्व जोड़ना चाहता हूं, तो मुझे यह जानना होगा कि यह किस प्रकार की सूची है। यही कारण है कि मैं ज्ञात प्रकार का एक नया ऐरेलिस्ट बनाता हूं और इसमें सभी पुराने तत्व जोड़ता हूं, साथ ही एक नया। फिर मैं पुरानी सूची को नए से बदलता हूं, और जब मैं इसे सांप्यामल को यमल में बदलने के लिए कहता हूं, तो मेरा जोड़ा तत्व वहां होगा। – Wolf480pl