मैंने अभी तक यह कोशिश नहीं की है, लेकिन यह जोखिम भरा लगता है। जिस मामले में मैं सोच रहा हूं वह जीबीएक्स के साथ सरल वीओ कक्षाओं का साधन है। इन वीओ को एएमएफ और संभवतः अन्य योजनाओं पर क्रमबद्ध किया जा रहा है। क्या कोई मेरे संदेहों की पुष्टि या इनकार कर सकता है कि बाइटकोड एन्हांसमेंट जैसी पिछली सामग्री को सामान्य रूप से गड़बड़ कर सकती है, और कुछ पृष्ठभूमि जानकारी क्यों प्रदान की जाती है? इसके अलावा, मुझे जीबीएक्स के विशिष्ट मामले में रूचि है।क्या कक्षाओं पर बाइटकोड एन्हांसमेंट तकनीक का उपयोग करना सुरक्षित है जो धारावाहिक हो सकता है और क्यों?
उत्तर
दृश्यों के पीछे, क्रमबद्धता प्रतिबिंब का उपयोग करती है। आपका बाइटकोड मैनिपुलेशन संभावित रूप से फ़ील्ड जोड़ रहा है। इसलिए, जब तक आप इन क्षेत्रों को क्षणिक के रूप में चिह्नित नहीं करते हैं, तो उन्हें सामान्य फ़ील्ड की तरह क्रमबद्ध किया जाएगा।
तो, आप दोनों पक्षों पर एक ही बाईटकोड हेरफेर प्रदर्शन किया है प्रदान की है, आप ठीक हो जाओगे।
आप आप को समझने के लिए पश्च संगतता काम सुविधाओं क्रमबद्धता प्रलेखन पढ़ने के लिए की आवश्यकता होगी नहीं किया है। अनिवार्य रूप से, मैं सोचता हूं आप उन क्षेत्रों को भेज सकते हैं जिन्हें रिसीवर द्वारा अपेक्षित नहीं है और आप ठीक हैं; और आप फ़ील्ड को याद कर सकते हैं और उन्हें प्राप्त करने वाले अंत में उनके डिफ़ॉल्ट मान मिलेंगे। लेकिन आपको इसे स्पेक में देखना चाहिए!
यदि आप केवल विधियां जोड़ रहे हैं, तो उनके पास क्रमिकरण पर कोई प्रभाव नहीं पड़ता है, जब तक कि वे readResolve()
आदि जैसी चीजें न हों, जिन्हें विशेष रूप से क्रमबद्धरण तंत्र द्वारा उपयोग किया जाता है।
बदलते/एक वर्ग के लिए सार्वजनिक या संरक्षित क्षेत्रों या तरीकों को हटाने यह deserialized जा करने की क्षमता है को प्रभावित करेगा जोड़ना /। इंटरफेस जोड़ने के रूप में। इन्हें अन्य चीजों के साथ serialVersionUID उत्पन्न करने के लिए उपयोग किया जाता है जो धारावाहिक प्रक्रिया के हिस्से के रूप में स्ट्रीम में लिखा जाता है। यदि वर्ग के serialVersionUID
deserialization के दौरान लोड कक्षा से मेल नहीं खाता है, तो यह असफल हो जाएगा।
आप स्पष्ट रूप से अपने वर्ग परिभाषा serialVersionUID
सेट करते हैं तो आप इस से प्राप्त कर सकते हैं। आप readObject
और writeObject
को भी लागू करना चाहते हैं।
चरम मामले में आप Externalizable को लागू करने और वस्तु के सभी क्रमबद्धता का पूरा नियंत्रण हो सकता है।
निरपेक्ष सबसे खराब स्थिति परिदृश्य (हालांकि कुछ स्थितियों में अविश्वसनीय रूप से उपयोगी) एक जटिल वस्तु पर writeReplace
को क्रमबद्ध करने के लिए इसे क्रमबद्ध करने के लिए एक सरल वस्तु ऑब्जेक्ट को स्वैप करने के लिए है। फिर deserialization में सरल मूल्य वस्तु दूसरी तरफ जटिल वस्तु का पुनर्निर्माण या पता लगाने के लिए readResolve
लागू कर सकते हैं। जब आप इसे खींचने की ज़रूरत होती है तो यह दुर्लभ होता है, लेकिन जब आप करते हैं तो बहुत मजेदार होता है।
+1। मैं उसके बारे में भूल गया। यदि आप रनटाइम पर इसकी गणना नहीं करते हैं, जो संभावित रूप से ऑब्जेक्ट्स को स्थानांतरित करने की क्षमता को प्रभावित करेगा। – dty
- 1. "iframe sandbox" तकनीक सुरक्षित है?
- 2. क्या windows.screen का उपयोग करना सुरक्षित है?
- 3. ओएसजीआई का उपयोग करते समय बाइटकोड मैनिपुलेशन करना संभव है?
- 4. गुमनाम आंतरिक कक्षाओं पर हीरा का प्रकार क्यों नहीं हो सकता है?
- 5. EJBContext getContextData का उपयोग करना - क्या यह सुरक्षित है?
- 6. कौन सी लिनक्स आईपीसी तकनीक का उपयोग करना है?
- 7. क्या कक्षाओं की संख्या पर कोई सीमा है जो नामस्थान में .NET में हो सकती है?
- 8. एक विश्वसनीय API का उपयोग करना - क्या यह सुरक्षित है?
- 9. क्या यह सर्वर पर "पहुंच-नियंत्रण-अनुमति-उत्पत्ति: *" सेटिंग का उपयोग करना सुरक्षित है और एक ही समय में सत्र आधारित कुकीज़ का उपयोग करना सुरक्षित है?
- 10. CopyOnWriteArrayList थ्रेड-सुरक्षित कैसे हो सकता है?
- 11. क्या अभी भी ASIHTTPRequest का उपयोग करना सुरक्षित है?
- 12. जावा बाइटकोड इंजेक्शन क्या है?
- 13. एक धारावाहिक आंतरिक वर्ग धारावाहिक क्यों नहीं है?
- 14. क्या javax.xml.ws.Service वस्तुओं का पुन: उपयोग करना सुरक्षित है?
- 15. क्या जेएक्सबी बाइटकोड उपकरण का उपयोग करता है?
- 16. रुबी में सिंगलटन कक्षाओं का उपयोग करना कब बुद्धिमान है?
- 17. ईबीन एन्हांसमेंट
- 18. क्या संपत्ति का प्राप्ति सार हो सकती है और सेट आभासी हो सकता है?
- 19. java.lang.NoClassDefFoundError का कारण क्या हो सकता है?
- 20. क्या कोड में डीबीएल_एमएक्स का उपयोग करना सुरक्षित है?
- 21. एकाधिक कक्षाओं से विरासत का उपयोग क्या है?
- 22. बाइटकोड और ऑब्जेक्ट्स पर स्पष्टीकरण
- 23. क्या सी # का उपयोग कथन का उपयोग कर सुरक्षित है?
- 24. क्रॉकफोर्ड की ऑब्जेक्ट निर्माण तकनीक में क्या हो रहा है?
- 25. 'स्प्ली' से 'सुरक्षित' सुरक्षित क्यों है?
- 26. क्या NSLocalizedString() में "असली" कुंजी का उपयोग करना सुरक्षित है? क्या गारंटीकृत फ़ॉलबैक भाषा है?
- 27. NHibernate क्या है और मुझे इसका उपयोग क्यों करना चाहिए?
- 28. जब यह वास्तव में (अनाम) आंतरिक कक्षाओं का उपयोग करने के लिए सुरक्षित रिसाव है?
- 29. क्या लिनक्स में 9-बिट धारावाहिक संचार का उपयोग करना संभव है?
- 30. क्यों XMLHttpRequest ProgressEvent.lengthComputable गलत हो सकता है?
+1 दोनों पक्षों को बढ़ाने के लिए KISS दृष्टिकोण को इंगित करने के लिए +1। निश्चित रूप से मैं पहले क्या कोशिश करता हूँ। 'SerialVersionUID' के लिए –