/ / क्रमबद्ध कैसे तय करें serialVersionUID समान वर्ग में समान अपवाद नहीं है? - जावा, धारावाहिक विसर्जन

क्रमबद्ध कैसे तय करें SerVersionUID समान वर्ग में समान अपवाद नहीं है? - जावा, धारावाहिक विसर्जन

java.io.InvalidClassException:
com.sungymobile.cache.resource.ResourceCacheLoader$ResourceCache;
local class incompatible: stream classdesc serialVersionUID = 6381106003702990139,
local class serialVersionUID = 3777451853403693248

उत्तर:

जवाब के लिए 0 № 1

लगता है, कि आपके पास एक क्रमबद्ध वर्ग है, जो निश्चित सीरियल संस्करण पैरामीटर प्रदान नहीं करता है। आपको प्रदान करना होगा:

private static final long serialVersionUID = 0L;

अपनी कक्षा में किसी भी लंबे मूल्य के साथ, जिसे कैश किया जाना चाहिए। सीरियल डॉक्स के लिए जावा डॉक्स के कारण:

क्रमांकन रनटाइम प्रत्येक के साथ जुड़ता हैसीरियलाइज़ेबल क्लास एक वर्जन नंबर, जिसे सीरियलवर्सन यूआईडी कहा जाता है, जिसका उपयोग यह सत्यापित करने के लिए किया जाता है कि सीरियलाइज्ड ऑब्जेक्ट के प्रेषक और रिसीवर ने उस ऑब्जेक्ट के लिए क्लासेस लोड की हैं, जो सीरियलाइजेशन के संबंध में संगत हैं। यदि रिसीवर ने उस ऑब्जेक्ट के लिए एक वर्ग को लोड किया है जिसके पास संबंधित प्रेषक "वर्ग" की तुलना में एक अलग serialVersionUID है, तो deserialization का परिणाम एक InvalidClassException में होगा। एक अनुक्रमिक वर्ग स्पष्ट रूप से "serialVersionUID" नाम से एक फ़ील्ड घोषित करके अपने स्वयं के serialVIDUID की घोषणा कर सकता है। यह स्थिर, अंतिम और लंबे प्रकार का होना चाहिए:

यह मान निर्धारित करने के लिए आवश्यक है, वर्थ कैश्ड आवृत्ति वर्तमान वर्ग के साथ एक ही संस्करण है, आपके पास है।