संभव डुप्लिकेट:
Why are not all type information erased in Java at runtime?रनटाइम पर पैरामिट्रीकृत प्रकार जानकारी तक पहुँचने
जावा के जेनरिक प्रकार विलोपन के माध्यम से लागू किया जाता है, तो मैंने सोचा कि यह पैरामिट्रीकृत प्रकार के बारे में कोई भी जानकारी प्राप्त करने के लिए कोई संभव हो गया था चलने के समय पर। हालांकि, मुझे जैक्सन पुस्तकालय में निम्नलिखित श्रेणी मिली।
void testTypeReference() {
// notice that we're instantiating an anonymous subclass of TypeReference
TypeReference<CurrencyDto> tr = new TypeReference<CurrencyDto>() {};
assert tr.getType() == CurrencyDto.class
}
इस वर्ग दिखाता है:
(मैं इस उदाहरण के लिए वर्ग थोड़ा सरल बना दिया है)
public abstract class TypeReference<T> {
final Type _type;
protected TypeReference() {
Type superClass = getClass().getGenericSuperclass();
_type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
}
public Type getType() { return _type; }
}
वर्ग उस तक पहुँच पैरामिट्रीकृत प्रकार है के रूप में निम्नलिखित परीक्षण दर्शाता है प्रदान करता है वास्तविक प्रकार पैरामीटर रनटाइम (प्रतिबिंब का उपयोग करके) पर पुनर्प्राप्त किए जा सकते हैं, यह इस धारणा के अनुरूप कैसे है कि जावा जेनरिक टाइप प्रकार के माध्यम से लागू किए गए हैं?
मुझे नहीं लगता कि यह उस अन्य प्रश्न का डुप्लिकेट है। वह प्रश्न पूछता है _why_ संकलक उस जानकारी को संग्रहीत करता है, जहां यह इस प्रकार के स्पष्टीकरण के लिए पूछता है कि यह प्रकार के मिटावट की धारणा के साथ कैसे फिट बैठता है। – ColinD