आपको सीरियलज़ेबल के रूप में व्युत्पन्न रूप से चिह्नित करने की आवश्यकता नहीं है, इसे विरासत में मिलाया जाएगा। हालांकि, अभिभावक से serialVersionUID, हालांकि विरासत में, serialization प्रक्रिया द्वारा उपयोग नहीं किया जाएगा। यदि आप बच्चे को एक serialVersionUID नहीं जोड़ते हैं तो एक उत्पन्न होगा।
नीचे देखें:
public class A implements Serializable {
protected static final long serialVersionUID = 1L;
}
public class B extends A {
}
public class Main {
public static void main(String[] args){
A a = new A();
B b = new B();
Class aClass = a.getClass();
Class bClass = b.getClass();
long aUid = ObjectStreamClass.lookup(aClass).getSerialVersionUID();
long bUid = ObjectStreamClass.lookup(bClass).getSerialVersionUID();
System.out.printf("serialVersionUID:\n");
System.out.printf("b inherited from a: %d\n", b.serialVersionUID);
System.out.printf("a used by serialization: %d\n",aUid);
System.out.printf("b used by serialization: %d\n",bUid);
}
}
आउटपुट:
serialVersionUID: 1
एक क्रमबद्धता द्वारा इस्तेमाल किया: 1
ख इस्तेमाल किया
ख एक से विरासत में मिली serialization द्वारा: -367523 2183873847366
स्रोत
2015-07-23 10:44:57
नहीं snarky ध्वनि करने के लिए है, लेकिन यह कम समय सिर्फ इस कोशिश के लिए ले की तुलना में यह आप ले लिया इस सवाल लिखने के लिए होगा। –
स्नैकी नहीं लगाना, लेकिन यह सलाह बहुत ही छोटी वेबसाइट होगी यदि वह सलाह लगातार ध्यान में रखी जाती है। –