2017-08-23 20 views
6

जावा 9 में स्ट्रिंग का आंतरिक प्रतिनिधित्व चार सरणी से बाइट सरणी में बदल दिया गया है।जावा 9 कॉम्पैक्ट स्ट्रिंग सीरियलाइजेशन-डेसेरियलाइजेशन और डेटा ट्रांसफर

विचार करें कि मैं जावा 9 चलाने वाली प्रणाली पर अपने स्ट्रिंग डेटा को क्रमबद्ध कर रहा हूं और फिर जावा 8 सिस्टम पर इसे deserialize करने का प्रयास करता हूं। इसके विपरीत स्थिति पर भी विचार करें।

एक और स्थिति जिसे मैं सोच सकता हूं स्ट्रिंग डेटा जावा 8 और जावा 9 सिस्टम में आरएमआई या जेएमएस का उपयोग कर प्रसारित किया जा रहा है।

ये परिदृश्य संभवतः कैसे काम कर सकते हैं? क्या ऐसी परिस्थितियों को संभालने के लिए स्ट्रिंग को अपग्रेड करने के सभी तरीके हैं?

+7

स्ट्रिंग का क्रमिकरण धाराओं में एक विशेष प्रतिनिधित्व है। यह प्रतिनिधित्व कभी नहीं बदलता है। तो आप तारों को सुरक्षित रूप से क्रमबद्ध और deserialize कर सकते हैं। Https://docs.oracle.com/javase/6/docs/platform/serialization/spec/protocol.html#stream-elements देखें – ZhekaKozlov

उत्तर

6

हालांकि यह सच है कि String का इन-मेमोरी प्रतिनिधित्व बदल गया है, इसकी Serializable प्रतिनिधित्व नहीं है। क्या आपने वास्तव में जावा 9 में String को क्रमबद्ध करने की कोशिश की है और जावा 8 में इसे वापस deserialize? मुझे नहीं लगता कि आप किसी भी समस्या में भाग लेंगे।

5

आप जावा पर भरोसा कर सकते हैं कि इस तरह के मूल को तोड़ना न पड़े। उदाहरण के लिए, String आमतौर पर DataOutput.writeUTF() के माध्यम से क्रमबद्ध किया जाता है। यह प्रतिनिधित्व नहीं बदला है।

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