java.util.Properties
java.util.Map
इंटरफ़ेस लागू करता है, और इसलिए आप बस इसे इस तरह के रूप इलाज कर सकते हैं, और putAll
की तरह उपयोग के तरीकों एक और Map
की सामग्री को जोड़ने के लिए।
हालांकि, अगर आप यह एक मानचित्र की तरह व्यवहार, तो आप इस के साथ बहुत सावधान रहना चाहिए:
new Properties(defaultProperties);
इस बार लोगों को बाहर फैल जाती है, क्योंकि यह एक प्रति निर्माता की तरह दिखता है, लेकिन यह नहीं ' टी। यदि आप उस कन्स्ट्रक्टर का उपयोग करते हैं, और उसके बाद keySet()
(Hashtable
सुपरक्लास से विरासत में मिलाकर) को कॉल करें, तो आपको Map
Properties
के विधियों को डिफॉल्ट Properties
ऑब्जेक्ट का खाता नहीं लेना चाहिए जिसे आपने कन्स्ट्रक्टर में पास किया था। डिफ़ॉल्ट केवल तभी पहचाने जाते हैं जब आप Properties
में परिभाषित विधियों का उपयोग करते हैं, जैसे getProperty
और propertyNames
, दूसरों के बीच।
तो अगर आप दो गुण वस्तुओं मर्ज करने के लिए की जरूरत है, यह सुरक्षित है यह करने के लिए:
Properties merged = new Properties();
merged.putAll(properties1);
merged.putAll(properties2);
यह आपको अधिक उम्मीद के मुताबिक परिणाम, बल्कि मनमाने ढंग से "डिफ़ॉल्ट" संपत्ति सेट के रूप में उनमें से एक लेबलिंग से दे देंगे ।
आम तौर पर, मैं एक Map
रूप Properties
इलाज नहीं जावा के शुरुआती दिनों से (गुण निहित होना चाहिए था एक Hashtable
, इसे बढ़ाया नहीं - कि आलसी डिजाइन किया गया था) की सिफारिश करेंगे, क्योंकि वह था (मेरी राय में) एक कार्यान्वयन गलती , लेकिन Properties
में परिभाषित एनीमिक इंटरफेस हमें कई विकल्प नहीं देता है।
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("default.properties"));
properties.load(getClass().getResourceAsStream("custom.properties"));
किसी ने उत्तर दिया लेकिन जवाब हटा दिया, यह बताते हुए कि सही तरीका 'putAll()' विधि का उपयोग करेगा, जो सही उत्तर है और जो मैं चाहता था उसे प्राप्त किया। मैंने देखा नहीं है कि 'java.util.Properties' 'java.util.Hashtable' बढ़ाता है। – Igor
आपको क्यों लगता है कि मेरा जवाब सही नहीं है? – Jerome
यह तकनीकी रूप से गलत नहीं है, लेकिन मैं जो चाहता था वह दो 'java.util.Properties' फ़ाइल को अपनी सामग्री को पुन: स्थापित किए बिना विलय करना था, और यह वही है जो 'putAll()' विधि करता है। – Igor