Thursday 15 March 2012

java - When to use intern() on String literals -


मुझे इस तरह बहुत सारे विरासत कोड दिखाई देता है:

  class A {public static final स्ट्रिंग कॉन्स्टेंट = "मान"। अंतराल (); ...}  

मुझे इंटर्न () के लिए कोई कारण नहीं दिखता है, जैसा कि जवाडॉक में कोई पढ़ सकता है: "सभी शाब्दिक स्ट्रिंग्स और स्ट्रिंग-मूल्यवान निरंतर अभिव्यक्तियां आंतरिक हैं।" क्या इसका कुछ इरादा है, शायद भाषा के पिछले संशोधन में?

यह सुनिश्चित करने के लिए एक तकनीक है कि CONSTANT वास्तव में एक स्थिर नहीं है।

जब जावा कंपाइलर अंतिम स्थैतिक आदिम या स्ट्रिंग के संदर्भ को देखता है, तो उस क्लास में उस निरंतर के वास्तविक मान को सम्मिलित करता है यह। यदि आप फिर परिभाषित वर्ग में निरंतर मान बदलते हैं लेकिन उपयोग की जाने वाली क्लाइंट को पुनः कंपाइल नहीं करते, तो यह पुराने मान का उपयोग जारी रखेगा।

"निरंतर" स्ट्रिंग पर इन्टर () को कॉल करके, यह है अब कंपाइलर द्वारा स्थिर स्थिर नहीं माना जाता है, इसलिए उपयोग करने वाले क्लास वास्तव में प्रत्येक उपयोग पर परिभाषित वर्ग के सदस्य का उपयोग करेंगे।


JLS उद्धरण:

  • < P> एक संकलन-समय स्थिरता की परिभाषा:

  • एक संकलन-समय स्थिरता (पृष्ठ के बारे में आधे रास्ते के बारे में) के परिवर्तनों का अर्थ:

  • < / Ul>

No comments:

Post a Comment