2015-03-23 7 views
7

में समान विधि विधि कृपया जोशुआ ब्लॉच के प्रभावी जावा के link पर देखें।जोशुआ ब्लोच के प्रभावी जावा

दूसरा पैराग्राफ में, लेखक का कहना है:

वर्ग निजी या पैकेज-निजी होती है और आपको विश्वास है कि इसकी बराबरी विधि लागू किया जा कभी नहीं होगा रहे हैं। बेशक, equals विधि इन परिस्थितियों में अधिरोहित किया जाना चाहिए, इस मामले में यह गलती से शुरू हो जाती है:

@Override public boolean equals(Object o) { 
    throw new AssertionError(); // Method is never called 
} 

कृपया यह समझाने। मैं लेखक के निजी वर्ग के उपयोग के द्वारा भ्रमित हो रहा हूं और यह कि जब हम निश्चित रूप से जानते हैं कि इसे लागू नहीं किया जाएगा तो बराबर विधि को ओवरराइड करने की आवश्यकता क्यों है।

+1

उस पृष्ठ तक नहीं पहुंच सकता है। महत्वपूर्ण भाग की रिपोर्ट करें। –

+0

महोदय, यहां इस आलेख का एक और लिंक है http: //jtechies.blogspot.in/2012/07/item-8-obey-general-contract-when.html \ – user961690

+2

आप: * "जब हम निश्चित रूप से जानते हैं कि यह "* नहीं कहा जाएगा जोशुआ ब्लोच: * "अगर इसे गलती से बुलाया जाता है" *। क्या आपके पास दूसरा प्रश्न है? – Tom

उत्तर

8

एक कक्षा केवल निजी हो सकती है यदि यह एक आंतरिक वर्ग है।

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

+1

आपका पहला कथन गलत है। न केवल कक्षा को आंतरिक होने की आवश्यकता नहीं है (घोंसला वाले वर्ग निश्चित रूप से निजी हो सकते हैं), लेकिन यह एक ही कक्षा के समान संकलन इकाई में एक शीर्ष-स्तरीय वर्ग भी हो सकता है। – chrylis

+0

आप नेस्टेड कक्षाओं के संबंध में सही हैं; मैंने "आंतरिक" लिखा लेकिन मेरा मतलब दोनों था। हालांकि मैं आपका दूसरा केस काम नहीं कर सकता: [यह gist] (https://gist.github.com/andreabergia/6aeb123b7474a5822ef6) जब MainClass.java के रूप में सहेजा गया है तो संकलित नहीं होता है। –

+0

प्रश्न में पुस्तक का उद्धरण * "निजी या पैकेज-निजी" * है, इसलिए एक ही संकलन इकाई में एक पैकेज-निजी शीर्ष-स्तरीय वर्ग भी यहां लागू होता है। – Radiodef

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