java.util.Properties
क्लास एक मानचित्र का प्रतिनिधित्व करने के लिए है जहां कुंजी और मान दोनों स्ट्रिंग हैं। ऐसा इसलिए है क्योंकि Properties
ऑब्जेक्ट्स .properties
फ़ाइलों को पढ़ने के लिए उपयोग किए जाते हैं, जो टेक्स्ट फ़ाइलें हैं।java.util.Properties मानचित्र <ऑब्जेक्ट, ऑब्जेक्ट> और मानचित्र क्यों नहीं लागू करता है <स्ट्रिंग, स्ट्रिंग>
तो, जावा 5 में क्यों वे इस वर्ग Map<Object,Object>
और नहीं Map<String,String>
लागू करने के लिए पुनः स्थापित किया था?
javadoc कहता है:
क्योंकि गुण Hashtable से विरासत, पुट और putAll तरीकों एक गुण वस्तु के लिए लागू किया जा सकता है। उनका उपयोग दृढ़ता से निराश होता है क्योंकि वे कॉलर को उन प्रविष्टियों को सम्मिलित करने की अनुमति देते हैं जिनकी चाबियाँ या मान स्ट्रिंग नहीं हैं। इसके बजाय सेटप्रोपर्टी विधि का उपयोग किया जाना चाहिए। यदि स्टोर या सेव विधि को "समझौता" गुण ऑब्जेक्ट पर कॉल किया जाता है जिसमें गैर-स्ट्रिंग कुंजी या मान होता है, तो कॉल विफल हो जाएगी।
चूंकि कुंजी और मान दोनों स्ट्रिंग होने के लिए हैं, तो उचित सामान्य प्रकार का उपयोग करके स्थिर रूप से लागू क्यों न करें?
मैं Properties
लागू Map<String,String>
पूरी तरह से पिछड़े पूर्व जावा 5. के लिए लिखा आप पुराने कोड है कि चिपक गैर तार है, तो कोड के साथ संगत में एक गुण वस्तु तो है कि कोड अब जावा 5 के साथ संकलन होगा नहीं होगा बनाने लगता है। लेकिन ... क्या यह अच्छी बात नहीं है? संकलन समय पर ऐसी प्रकार की त्रुटियों को पकड़ने के लिए जेनेरिकों का पूरा बिंदु नहीं है?
असल में मानचित्र x = new Properties() किसी भी तरह से काम करते हैं। इसके लोग गुणों जैसे बटन डालते हैं। ("ध्वज", बूलियन। टीआरयूई); मैंने लोगों को सभी प्रकार के डेटा को गुण वस्तु में रखा है, लेकिन कभी भी गैर-स्ट्रिंग कुंजी नहीं है। ;) –
मैंने स्पष्ट करने के लिए अपना उत्तर अपडेट कर दिया है, धन्यवाद। –
एक मिनट रुको! मानचित्र <ऑब्जेक्ट, ऑब्जेक्ट> एक्स = नई प्रॉपर्टीज() कानूनी प्री-जावा 5 नहीं है, <ऑब्जेक्ट, ऑब्जेक्ट> सिंटैक्स जावा 5 में पेश किया गया था। इसलिए कथन "पहले वैध कोड" गलत है। –