2011-12-08 10 views
5

के माध्यम से Serialize/deserialize मान लीजिए मेरे पास 1 बेस क्लास और व्युत्पन्न कक्षा है। व्युत्पन्न वर्ग में अतिरिक्त फ़ील्ड हैं जो बेस क्लास नहीं है।सुपर क्लास

मैं फिर व्युत्पन्न कक्षा को तुरंत चालू करता हूं और इसे बेस क्लास की परिभाषा में निर्दिष्ट करता हूं। क्या होता है जब मैं बेस क्लास के माध्यम से ऑब्जेक्ट को क्रमबद्ध और deserialize।

उदाहरण के लिए:

Class TypeA{ 
    int var1; 
} 

Class TypeB extends class TypeA{ 
    int var2; 
} 

Class X{ 
    public TypeA obj = new TypeB(); 
} 

मैं अब "obj" serialise तो शामिल हो var2 करता है?

उत्तर

4

हां, क्रमबद्धता संदर्भ के प्रकार (जो obj वास्तव में है, मेरा संदर्भ है) पर निर्भर नहीं है, लेकिन ऑब्जेक्ट के प्रकार/वर्ग पर संदर्भित किया जा रहा है, जो अभी भी TypeB है। यदि आप obj.getClass() पर कॉल करते हैं तो यह TypeB.class लौटाएगा और यही वह क्रमशः भी देखेंगे।

+0

आप सही साबित करने के लिए धारावाहिक, deserialize और फिर 'obj'' टाइपबी' को कास्ट कर सकते हैं। – SteeveDroz

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