जावा एसई 6 में प्रोपेरीज़ क्लास में setProperty(String key, String value)
नामक एक विधि है, जो Object
देता है। इसके अलावा, पिछले Object
इस कुंजी के लिए संग्रहीत, या NULL
यदि कोई मौजूद नहीं है। setProperty(String key, String value)
के बाद से केवल String
मूल्य के रूप में ले सकते हैं, तो यह विधि String
क्यों नहीं लौटाती है?जावा में सेटप्रोपर्टी ऑब्जेक्ट वापस क्यों करता है?
उत्तर
दुर्भाग्यवश कक्षा java.util.Properties
जेनिक्स से कई साल पहले जावा 1.0 में पेश की गई थी। Properties
Hashtable
फैलाता है जो किसी भी प्रकार का डेटा स्टोर कर सकता है। इस उदाहरण setProperty
में
Properties props = new Properties();
props.put("key", new Object()); // use Hashtable's put method
props.setProperty("key", "value"); // use Proerties' setProperty method
पिछले मान इस प्रविष्टि में जमा हो जाती है, यानी Object
लौटना चाहिए: तो, आप निम्न कर सकते हैं। लेकिन यह String
नहीं है! ClassCastException
से बचने के लिए जेडीके रचनाकारों को setProperty()
को विधि के रूप में परिभाषित करना था जो Object
लौटाता है।
बीटीडब्ल्यू अब भी कक्षा गुण Map<Object, Object>
Map<String, String>
के बजाय पिछड़ा संगतता के लिए लागू करता है।
क्योंकि संपत्ति हैशटेबल को विस्तारित करके शुरुआत से गलत तरीके से गलत थी, जो कुछ भी स्टोर कर सकती है। इस प्रकार डिज़ाइन ने लिस्कोव प्रतिस्थापन सिद्धांत का सम्मान नहीं किया: आधार वर्ग जो भी कर सकता है, सबक्लस करने में सक्षम होना चाहिए।
चूंकि गुण हैशटेबल को बढ़ाता है, इसलिए आप वास्तव में किसी भी प्रकार के ऑब्जेक्ट को स्टोर कर सकते हैं।
- 1. Math.ceil एक डबल वापस क्यों करता है?
- 2. sys.getrefcount() 2 वापस क्यों करता है?
- 3. AndroidTestCase.getContext()। GetAplicationContext() वापस शून्य क्यों करता है?
- 4. BitmapFactory.decodeByteArray वापस शून्य क्यों करता है?
- 5. Array.to_s ब्रैकेट वापस क्यों करता है?
- 6. असाइनमेंट वापस क्या करता है?
- 7. क्यों DirContext.close() पूल में एलडीएपी कनेक्शन वापस नहीं करता है?
- 8. सेटप्रोपर्टी को SOAPMessage
- 9. रूबी में nil.id वापस 4 क्यों करता है?
- 10. classname.class वापस क्या करता है?
- 11. पायथन में, getresponse() वापस क्या करता है?
- 12. CGColorGetComponents() वापस क्या करता है?
- 13. स्थिर InetAddress.getLoopbackAddress() वापस क्या करता है?
- 14. कैश क्यों करता है। कैश किए गए आइटम का प्रतिनिधित्व करने वाली ऑब्जेक्ट को वापस जोड़ें?
- 15. java.util.Properties मानचित्र <ऑब्जेक्ट, ऑब्जेक्ट> और मानचित्र क्यों नहीं लागू करता है <स्ट्रिंग, स्ट्रिंग>
- 16. ऑब्जेक्ट <String> जावा में साइन इन करता है?
- 17. सी ++ में "ऑब्जेक्ट वापस कैसे करें"?
- 18. ArrayList कार्यान्वयन ऑब्जेक्ट [] का उपयोग क्यों करता है?
- 19. जावा: ऑब्जेक्ट क्लास में एक कन्स्ट्रक्टर है?
- 20. जावा जेनरिक: Map.get() क्यों अनदेखा करता है?
- 21. जावा का इनपुटस्ट्रीम.क्लोज़() ब्लॉक क्यों करता है?
- 22. असाइनमेंट ऑपरेटर एक मान वापस क्यों करता है, संदर्भ नहीं?
- 23. क्यों एक अजगर dict.update() वस्तु वापस नहीं करता है?
- 24. क्यों [NSDictionary allKeys] एक सेट वापस नहीं करता है?
- 25. यह कोड एक NullPointerException वापस क्यों नहीं करता है?
- 26. पोस्टग्रेस्क्ल तुरंत पंक्तियों को वापस क्यों शुरू नहीं करता है?
- 27. खाली सरणी के लिए json_decode वापस शून्य क्यों करता है?
- 28. क्यों हास्केल की Prelude.read एक वापसी वापस नहीं करता है?
- 29. दिनांक .parse दिनांक वस्तु वापस क्यों नहीं करता है?
- 30. क्यों scipy.io.wavfile.read एक tuple वापस नहीं करता है?
यदि आप जावाडोक देखते हैं तो आपको पता चलेगा कि यह आपके द्वारा निर्धारित मूल्य लौटाता है। –
क्योंकि यह एक बुरी तरह छिपी हुई हैश मैप है? –
यह स्टीप्रोपर्टी 1.2 से आसपास है: http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#setProperty(java.lang.String, java.lang.String) – Nivas