java - Class implements two interfaces with the same method but different checked exceptions -


"ओरेकल प्रमाणित व्यावसायिक जावा SE 7 प्रोग्रामर परीक्षा 1Z0-804 और 1Z0-805 ए व्यापक ओपीपीपी 7 प्रमाणन गाइड" एसजी गणेश और तुषार शर्मा द्वारा, यह कहा गया है

"यदि एक विधि 2 या अधिक इंटरफेस में घोषित की जाती है, और अगर उस पद्धति ने फॉरेज़ क्लॉज में अलग-अलग अपवाद फेंकने का घोषित किया है, तो कार्यान्वयन सभी को सूचीबद्ध करना चाहिए इन अपवाद "(पृष्ठ 347)

अच्छा, फिर मैंने यह कोशिश की है

  सार्वजनिक इंटरफ़ेस I1 {सार्वजनिक शून्य x () I1Exception फेंकता है; } सार्वजनिक इंटरफ़ेस I2 {सार्वजनिक शून्य x () I2Exception फेंकता है; } पब्लिक क्लास I1Exception अपवाद {} सार्वजनिक वर्ग I2Exception विस्तार करता है अपवाद {} सार्वजनिक वर्ग नमूना लागू करता है I1, I2 {@Override सार्वजनिक शून्य x ()) I2Exception फेंकता {नया I2Exception (); } @ ओवरराइड सार्वजनिक शून्य x () I1Exception फेंकता {नया I1Exception (); }}   

बेशक, अपवाद विधि हस्ताक्षर का हिस्सा नहीं है, इसलिए संकलक शिकायत करता है कि दूसरी विधि दोहराई गई है।

दूसरी ओर

  @ ओवरराइड सार्वजनिक शून्य x () I1Exception फेंकता है, I2Exception {नया I1Exception (); }   

दोनों इंटरफेस के साथ संगत नहीं है क्योंकि यह प्रत्येक अंतरफलक के किसी एक तरीके से अलग से ली गई तुलना में अधिक जाँच अपवाद घोषित करता है।

इसका अर्थ है कि मुझे समझ नहीं आ रहा है कि किताब क्या बताती है या इसका मतलब यह है कि पुस्तक का बयान निरर्थक है?

उस पुस्तक का विशिष्ट वाक्य गलत लगता है। जावा लैंग्वेज स्पेसिफिकेशन में इस समस्या को समझाते हुए अधिक उचित खंड है (जो मुझे लगता है कि पुस्तक द्वारा संदर्भित भाग है)।

तो इस मामले में , दोनों घोषणाओं के साथ संगत है

  @Override सार्वजनिक शून्य x () {}   

दोनों घोषणाओं में वे शामिल हो सकते थे आम अपवाद था घोषणा में

  इंटरफ़ेस I1 {सार्वजनिक शून्य x () I1Exception फेंकता है, I2Exception; } इंटरफ़ेस I2 {सार्वजनिक शून्य x () I2Exception फेंकता है; }   

तब

  @Override सार्वजनिक शून्य x () I2Exception {}   

फेंकता है या वैकल्पिक रूप से आपके उदाहरण में , यदि आपके पास कुछ है तो

  वर्ग I1Exception विस्तारित I2Exception {} वर्ग I2Exception अपवाद {}   

विस्तारित करता है तो एक संगत पद्धति घोषणा के रूप में लिखा जा सकता है

  @ ओवरराइड सार्वजनिक शून्य x () I1Exception {}     फेंकता है

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

.net - Creating a new Queue Manager and Queue in Websphere MQ (using C#) -