इसलिए मैंने पहले इस सवाल से पूछा लेकिन मुझे उस कोड में गलती हुई जो ज्यादातर लोगों ने समस्या के बजाए उठाया।जावा: विधि को ओवरराइड करते समय पैरामीटर के सबक्लास/सबटाइप को प्रतिस्थापित करना?
वैसे भी, मैं कक्षा में एक इंटरफ़ेस विधि को ओवरराइड करने का प्रयास कर रहा हूं। हालांकि, मैं ओवरराइडिंग विधि में पैरामीटर के प्रकार को ओवरराइड विधि में परिभाषित पैरामीटर के प्रकार का उप-वर्ग होना चाहता हूं।
इंटरफेस है:
public interface Observer {
public void update(ComponentUpdateEvent updateEvent) throws Exception;
}
जबकि वर्ग है कि इस विधि को ओवरराइड करता है:
public class ConsoleDrawer extends Drawer {
//...
@Override
public void update(ConsoleUpdateEvent updateEvent) throws Exception {
if (this.componentType != updateEvent.getComponentType()) {
throw new Exception("ComponentType Mismatch.");
}
else {
messages = updateEvent.getComponentState();
}
}
//...
}
ConsoleUpdateEvent ComponentUpdateEvent का एक उपवर्ग है।
अब, मैं केवल कंसोलड्रावर में अद्यतन() विधि को एक घटक के रूप में एक घटक अद्यतनडेटा ले सकता हूं और फिर इसे एक कंसोल अपडेटाइवेंट पर डाल सकता हूं लेकिन यदि संभव हो तो मैं थोड़ा अधिक सुरुचिपूर्ण समाधान ढूंढ रहा हूं। किसी भी सहायता की सराहना की जाएगी। धन्यवाद।
मुझे विश्वास नहीं है क्योंकि यह एक इंटरफेस के सिद्धांत के खिलाफ है (यानी कक्षाएं जो इंटरफ़ेस को कार्यान्वित करती हैं, इंटरफ़ेस द्वारा निर्दिष्ट सभी विधि हस्ताक्षरों से बिल्कुल मेल खाती हैं)। हालांकि, मैं इस सवाल को देखूंगा क्योंकि मुझे यह देखने में बहुत दिलचस्पी है कि कोई और मुझे गलत साबित करेगा या नहीं। – DGH