2010-12-30 15 views
39

मुझे अभी जावा में पता चला है कि आप एक फ़ील्ड 'स्थैतिक क्षणिक' घोषित कर सकते हैं - संकलक शिकायत नहीं करता है। यह किसी भी तरह से उपयोगी प्रतीत नहीं होता है क्योंकि स्थैतिक क्षेत्रों को क्रमबद्ध नहीं किया जाता है, जैसा कि हम सभी जानते हैं।जावा: स्टेटिक क्षणिक फ़ील्ड

लेकिन मुझे आश्चर्य है, वास्तव में ऐसा कोई मामला है जहां 'स्थैतिक क्षणिक' फ़ील्ड उपयोगी हैं?

+30

स्थैतिक क्षणिक फ़ील्ड प्रतिबिंब के माध्यम से पता लगाया जा सकता है। आप एक्सएमएल, जेएसओएन आदि करने के लिए अपना खुद का सीरियलाइज़र लिख सकते हैं और यदि आप स्थैतिक चर को भी सहेजना चाहते हैं तो आप इसे एक विशेष अर्थ दे सकते हैं। उपयोग केस प्राप्त करने के लिए –

+0

+1। मेरी समझ यह अनावश्यक थी। – Nishant

+3

बीटीडब्लू: आपके पास अन्य संशोधक संयोजन हो सकते हैं जो एक अमूर्त वर्ग या अंतिम श्रेणी के संरक्षित कन्स्ट्रक्टर/विधि पर सार्वजनिक कन्स्ट्रक्टर की तरह ज्यादा समझ नहीं लेते हैं। –

उत्तर

15

नहीं - आपने इसे स्वयं कहा, स्थिर फ़ील्ड क्रमबद्ध नहीं हैं।

किंडा अजीब है कि संकलक आपको ऐसा करने देता है।

+19

वे जावा धारावाहिक में निर्मित द्वारा क्रमबद्ध नहीं हैं। हालांकि अन्य धारावाहिक अलग-अलग व्यवहार कर सकते हैं। –

+3

और यहां तक ​​कि एक और धारावाहिक के साथ, स्थिर क्षेत्रों को बचाने का बिंदु है ...? –

+4

@ पीटर, जिस तरह से serialVersionUID एक अपवाद होगा। –

7

ज्यादातर मामलों में, यह उपयोगी नहीं है। स्थिर क्षेत्र वास्तव में डिफ़ॉल्ट serializer द्वारा serialized नहीं हैं।

हालांकि, statictransient फ़ील्ड प्रतिबिंब के माध्यम से पता लगाया जा सकता है। यदि कोई अपना स्वयं का धारावाहिक लिखता है और वह स्थिर क्षेत्रों को क्रमबद्ध करना चाहता है, तो वह transient कीवर्ड को ध्यान में रखकर उस विशेष फ़ील्ड के क्रमबद्धता को छोड़ दें।

पीएस: यह उत्तर पूर्णता के लिए पोस्ट किया गया है, और यह Peter Lawrey's comment पर आधारित है। उसे श्रेय।

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