2011-10-11 9 views
23

मेरे पास एक आंतरिक कक्षा में एक निजी विधि है जो निजी है मैं सुरक्षितवर्क्स एनोटेशन का उपयोग करना चाहता हूं। हालांकि, मुझे या तो स्थिर या अंतिम विधि की आवश्यकता है। एक निजी विधि को भी अंतिम क्यों होना चाहिए? क्या यह अनावश्यक नहीं है?जावा @ सेफ वर्गार्ज क्यों निजी विधियों को अंतिम होने की आवश्यकता है

+0

अगर मैं सही आप @Safe निर्माताओं के लिए varargs और स्थिर तरीकों, अंतिम तरीकों के लिए के लिए, जावा-9 निजी – gstackoverflow

उत्तर

15

यह अनावश्यक है, और आप एक उत्कृष्ट बिंदु लाते हैं।

मुझे लगता है कि अंतिम या स्थैतिक की आवश्यकता के लिए वास्तविक कारण यह था कि विधि को ओवरराइड नहीं किया जा सकता था, और इस प्रकार एक उप-वर्ग डेटा के साथ छेड़छाड़ नहीं कर सका जिसने परिभाषा पर @SafeVarargs एनोटेशन बेकार कर दिया विधि का

लेकिन, हालांकि यह अनावश्यक है, लेकिन यह निर्णय का बुरा नहीं है - कई बार, प्रोग्रामर हर विधि को जितना संभव हो सके निजी बनाते हैं, और फिर धीरे-धीरे कक्षा को आवश्यकतानुसार खोलते हैं। यदि यह विधि निजी दायरे में होने पर अंतिम रूप में चिह्नित की जाती है, तो यदि विधि को खोला जाना है, तो अभी भी पहुंच स्तर पर केवल परिवर्तन के साथ @SafeVarargs एनोटेशन हो सकता है। यदि अंतिम रूप से अंतिम रूप से हटा दिया जाता है, तो आपको संकलन समय त्रुटि मिल जाएगी, लेकिन यदि आपके पास पहले से ही है, तो जो भी निजी पहुंच को हटा देता है (जो स्वयं नहीं हो सकता है, टीम-आधारित वातावरण में) क्यों भ्रमित नहीं होगा "निजी" संशोधक को हटाने से अचानक कोड अब संकलित नहीं होता है।

+1

के लिए के बाद से त्रुटि संदेश "अवैध java.lang की तरह कुछ होगा उपयोग कर सकते हैं समझते हैं। सुरक्षित चेतावनी एनोटेशन। इंस्टेंस विधि ... अंतिम नहीं है और न ही निजी ", जो भी 'निजी' हटा देता है, उसके लिए कोई भ्रम नहीं होगा। –

4

यह सुविधा परियोजना सिक्का 2 का हिस्सा है और जुलाई 2017

यह कॉल को स्वीकार करना @SafeVarargs आ निजी तरीकों पर जावा 9 में avalaible हो जाएगा।

Link.

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