मेरे पास एक सारणी वर्ग है जिसमें एक सामान्य विधि है और मैं जेनेरिक पैरामीटर के लिए विशिष्ट प्रकारों को प्रतिस्थापित करके जेनेरिक विधि को ओवरराइड करना चाहता हूं। तो छद्म कोड में मेरे पास निम्न है:जावा जेनेरिक विधि विरासत और ओवरराइड नियम
public abstract class GetAndParse {
public SomeClass var;
public abstract <T extends AnotherClass> void getAndParse(T... args);
}
public class Implementor extends GetAndParse {
// some field declarations
// some method declarations
@Override
public <SpecificClass> void getAndParse(SpecificClass... args) {
// method body making use of args
}
}
लेकिन किसी कारण से मुझे ऐसा करने की अनुमति नहीं है? क्या मैं किसी प्रकार की वाक्यविन्यास त्रुटि कर रहा हूं या इस तरह की विरासत और ओवरराइडिंग की अनुमति नहीं है? विशेष रूप से मुझे @Override
के बारे में त्रुटि मिल रही है क्योंकि ग्रहण आईडीई मुझे getAndParse
लागू करने के लिए याद दिलाता रहता है।
यहां बताया गया है कि मैं उपरोक्त कोड को कैसे काम करना चाहता हूं। मेरे कोड में कहीं और एक ऐसी विधि है जो GetAndParse
को लागू करने वाली वस्तुओं के उदाहरणों की अपेक्षा करती है, जिसका विशेष रूप से अर्थ है कि उनके पास getAndParse
विधि है जिसका मैं उपयोग कर सकता हूं। जब मैं उस उदाहरण पर getAndParse
पर कॉल करता हूं तो संकलक यह देखने के लिए जांच करता है कि मैंने उचित तरीके से T
के विशिष्ट उदाहरणों का उपयोग किया है, इसलिए विशेष रूप से T
AnotherClass
का विस्तार करना चाहिए और यह SpecificClass
होना चाहिए।
छद्म कोड बहुत सार, अधिक जानकारी की आवश्यकता है – irreputable
'सार्वजनिक सार <टी का उपयोग करके अन्य क्लास> शून्य प्राप्त करें और पार्स (Args ... args); 'कोई समझ नहीं आता है। किस प्रकार के पैरामीटर के लिए अच्छा है? कंपाइलर को अपना वास्तविक मूल्य कैसे निर्धारित करना चाहिए और इसे कहां उपयोग करना चाहिए? – maaartinus
क्या आप हमें एक पूरा उदाहरण प्राप्त कर सकते हैं, जो वास्तव में संकलित (समस्याग्रस्त त्रुटि के अलावा) है और आपके द्वारा उल्लिखित त्रुटि उत्पन्न करता है? –