मुझे कैसे टिप्पणी करनी चाहिए, कि जावा में एक वर्ग अपरिवर्तनीय है?


14

मैं हाल ही में इस बात पर अड़ गया हूं कि कितनी उपयोगी अपरिवर्तनीय वस्तुएं हैं और जैसे कि यदि आप किसी निर्माणकर्ता को तत्व पास करते हैं और आपकी कक्षा अपरिवर्तनीय होनी चाहिए, तो आपको इन तत्वों की नकल करनी होगी यदि वे स्वयं अपरिवर्तनीय नहीं हैं।

इसके लिए मेरे प्रोजेक्ट के बारे में बहुत अधिक जाँच या ज्ञान की आवश्यकता है, क्योंकि यदि मेरे पास है

public A(B foo)

और Bअपरिवर्तनीय नहीं है, Aमुझे कॉपी करना होगा B। अब कल्पना Bअपरिवर्तनीय लगती है, लेकिन स्वयं के पास कंस्ट्रक्टर में उत्परिवर्तित कक्षाएं हैं और इसी तरह।

यदि जावा में एक वर्ग अपरिवर्तनीय है, तो क्या दस्तावेज़ीकरण के लिए एक मानक या सर्वोत्तम प्रथा है? ऐसा लगता है कि @immutableJavadoc में कोई कीवर्ड नहीं है ।

@Immutable एनोटेशन कुछ पूरी तरह से और ऑटो वर्ग पीढ़ी के लिए अलग-अलग मानक जावा का हिस्सा नहीं हो रहा है।


2
सबसे पहले, रक्षात्मक प्रतिलिपि आपको उस आस-पास जाने की अनुमति देती है। दूसरे, इसे दस्तावेज करने का तरीका क्लास
जावदोक है

"दस्तावेज़ का तरीका यह वर्ग जावादोक है" क्या ऐसा करने का एक मानक तरीका है? तो यह पहले से ही स्वीकृत उत्तर होगा।
अफीज़ेवोगेल

@ raptortech97 अपरिवर्तनीय वर्गों के प्रमुख लाभों में से एक यह है कि रक्षात्मक नकल की कोई आवश्यकता नहीं है । यदि किसी कथित अपरिवर्तनीय वस्तु की रक्षात्मक प्रतिलिपि बनानी है, तो आप इसे गलत कर रहे हैं।
इसकी

1
@itsbruce वह उत्परिवर्तनीय वस्तुओं को कॉपी करने के बारे में बात कर रहा था। इसके अलावा, एक अपरिवर्तनीय वस्तु को कॉपी करने का एक कारण है - कैश इलाके। कुछ कचरा संग्रहकर्ता वस्तुओं के सापेक्ष क्रम को संरक्षित करते हैं, इसलिए आवंटित की गई वस्तुएं एक साथ रहती हैं।
डोभाल

आप सही हे। मेरी गलती।
12

जवाबों:


7

Stringकक्षा के प्रलेखन को देखकर (बोल्ड टेक्स्ट कुछ ऐसा है जो मैंने किया है):

स्ट्रिंग वर्ग चरित्र तार का प्रतिनिधित्व करता है। जावा प्रोग्राम में सभी स्ट्रिंग शाब्दिक, जैसे "एबीसी" को इस वर्ग के उदाहरणों के रूप में लागू किया जाता है। तार स्थिर हैं; उनके मान बनाए जाने के बाद उन्हें बदला नहीं जा सकता। स्ट्रिंग बफ़र्स म्यूटेबल स्ट्रिंग्स का समर्थन करते हैं। क्योंकि स्ट्रिंग ऑब्जेक्ट अपरिवर्तनीय हैं, उन्हें साझा किया जा सकता है।

जैसा कि आप देख सकते हैं, कोई विशेष लेबलिंग या अन्य मार्कर नहीं हैं, हालांकि, वे जावाडॉक में यह निर्दिष्ट करते हैं कि Stringकक्षा एक स्थिर, अपरिवर्तनीय वस्तु का प्रतिनिधित्व करती है।

इस प्रकार, यह मानते हुए कि आपने इस ओरेकल ट्यूटोरियल में एक अपरिवर्तनीय वर्ग बनाने के लिए दिए गए निर्देशों का पालन किया है, यह सुनिश्चित करने के लिए कि कक्षा की अपरिवर्तनीयता का दस्तावेजीकरण किया गया है, आपको सिर्फ यह सुनिश्चित करना चाहिए कि आप इसमें उल्लेख करते हैं कि जावाडॉक में कक्षा का वर्णन है और यह क्या है कर देता है।

यदि वह अभी भी आपकी ज़रूरत के अनुरूप नहीं है, तो आप इस पर एक नज़र डाल सकते हैं कि आप यहां कस्टम जावाडॉक टैग कैसे बना सकते हैं


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.