2016-01-01 7 views
8

मुझे समझना है कि क्यों जावा 8 विकल्प अपरिवर्तनीय होने के लिए डिज़ाइन किए गए थे। क्या यह सिर्फ थ्रेड-सुरक्षा के लिए है?जावा विकल्प क्यों अपरिवर्तनीय हैं?

+4

जावा में कई बातें, अपरिवर्तनीय हैं आमतौर पर प्रदर्शन के लिए। –

+4

हाल ही के वर्षों में अपरिवर्तनीयता ने थ्रेड सुरक्षा और बग बनाने के समग्र जोखिम के कई फायदों के कारण बहुत लोकप्रियता प्राप्त की है। इसके अलावा यह कार्यात्मक प्रोग्रामिंग प्रतिमान के साथ अधिक संगत है जिसे जावा 8 को गले लगाने के लिए माना जाता है। – SpiderPig

+2

@ElliottFrisch वैकल्पिक कारणों के लिए अपरिवर्तनीय नहीं है, अपरिवर्तनीयता इसके डिजाइन का मुख्य पहलू है - यह एक संदर्भ के मूल्य के लिए है, आखिरकार। Https://docs.oracle.com/javase/8/docs/api/java/lang/doc-files/ValueBased.html – pvg

उत्तर

10

विकल्प चीजों को पार करने के लिए हैं। यदि आप किसी को कुछ देते हैं और फिर अपनी सामग्री बदलते हैं, तो वे बहुत आश्चर्यचकित होंगे, न कि अच्छे तरीके से।

+0

के मामले में विशेष रूप से गलत है, इसके बारे में और अधिक पढ़ने के बाद और यह महसूस किया कि, किसी भी उद्देश्य के लिए विकल्प का उपयोग करने के लिए (स्पष्ट) आजादी के बावजूद, पर्याप्त रूप से विधि वापसी मूल्यों के लिए उन्हें रैपर बनाने के लिए डिज़ाइन किया गया था, जवाब डिजाइन मंशा के मामले में सबसे सही लगता है। –

6

वैकल्पिक को एक मूल्य वस्तु माना जाता है, और 3am पर एक बग को ट्रैक करने के लिए अपने बालों को खींचने की क्षमता को कम करने में मदद करने के लिए अपरिवर्तनीय होना चाहिए। आप यहाँ विषय पर थोड़ा अधिक के लिए पढ़ सकते हैं:

http://martinfowler.com/bliki/ValueObject.html

http://c2.com/cgi/wiki?ValueObjectsShouldBeImmutable

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