2013-12-09 8 views
7
public class Employee2 extends Employee1 {} 

public class Employee1 extends Employee0 {} 

public class Employee0 {} 

अब मैं Employee2 वर्ग औरअभिभावक वर्ग serializable लागू नहीं करता है, तो बाल वर्ग serializing?

get the error java.io.NotSerializableException: Employee2 

अब क्रमानुसार अगर बदल Employee1 वर्ग डीईएफ़

public class Employee1 extends Employee0 implements java.io.Serializable {} 

लिए यह अभी भी ठीक काम करता है लेकिन कृपया ध्यान दें Employee0 Serializable

है को लागू नहीं करता है बेस क्लास के लिए यह अनिवार्य है कि बाल वर्ग को क्रमबद्ध करने के लिए सीरियलज़ेबल को कार्यान्वित किया जाए? यदि हां क्यों केवल कर्मचारी 1 के लिए अनिवार्य है लेकिन कर्मचारी 0 के लिए नहीं?

मेरे उदाहरण के अनुसार यह हां जैसा दिखता है लेकिन नेट पर अन्य लेखों के अनुसार यह अनिवार्य नहीं होना चाहिए। तो मैं यहाँ क्या याद कर रहा हूँ?

उत्तर

5

यदि आप Employee2 ऑब्जेक्ट को क्रमबद्ध करना चाहते हैं, Employee2 को Serializable लागू करना है (अधिमानतः इसे विरासत के बजाय सीधे)। आपको अपवाद नहीं मिल रहा था क्योंकि Employee1 क्रमबद्ध नहीं है, आप इसे प्राप्त कर रहे थे क्योंकि Employee2 नहीं है, और आपने इसे वैसे भी क्रमबद्ध करने का प्रयास किया है।

Employee1 और Employee0 जरूरी Serializable लागू करने के लिए नहीं है, लेकिन अगर वे ऐसा नहीं करते हैं, तो वे तर्क कंस्ट्रक्टर्स के लिए (ताकि serializer पुनर्निर्मित Employee2 वस्तु का दृष्टांत कर सकते हैं) है।

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