2011-01-17 14 views
5

टाइप मिरर सभी जेनेरिक सूचनाओं को मिटाना है ... यदि ऐसा है तो जीएसओएन जैसी लाइब्रेरी जेनरिक्स का उपयोग कैसे करती है यह निर्धारित करने के लिए कि किस प्रकार का deserialize करने के लिए?जावा में टाइप करें

उदा

private Map<String,Date> tenordates; 

यह जहां के रूप में

private Map<Date,Date> tenordates; 

<String,Date> को deserialize इसलिए किसी भी तरह <Date,Date>

को deserialize होगा इसकी कार्यावधि में सामान्य जानकारी का उपयोग।

+2

प्रतिबिंब हो सकता है .. मैंने कोड की जांच नहीं की है। की –

+0

संभव डुप्लिकेट [getSimpleNameWithGenerics (कक्षा clazz)] (http://stackoverflow.com/questions/4707042/getsimplenamewithgenericsclass-clazz) – bmargulies

उत्तर

5

टाइप एरर सभी प्रकार की जानकारी मिटा नहीं देता है। यह वर्ग, फ़ील्ड, रिटर्न प्रकार और पैरामीटर परिभाषाओं से इसे हटा नहीं देता है। निम्न उदाहरण में प्रकार की जानकारी को बनाए रखा है:

public class Foo extends List<Bar> { ..} 

private List<Foo> foos; 

public List<Foo> getFoos() {..} 

public void doSomething(List<Foo> foos) {..} 

यह प्रतिबिंब के माध्यम से उस तक पहुंच है - java.lang.reflect.ParameterizedType। आप यह जांच सकते हैं कि दिया गया Typeinstanceof उस कक्षा में है, इसे डाला और प्रकार की जानकारी प्राप्त करें।

संबंधित मुद्दे