मैं कुछ कोड जावा 5 में अपग्रेड कर रहा हूं और जेनिक्स के साथ कुछ समझ नहीं रहा हूं। मेरे पास अन्य वर्ग हैं जो एक बार तुलनात्मक रूप से लागू होते हैं, जिन्हें मैं कार्यान्वित करने में सक्षम हूं। लेकिन अब मुझे एक कक्षा मिली है, विरासत के कारण, 2 प्रकार के लिए तुलनात्मक लागू करने की कोशिश कर रहा है। यहाँ मेरी स्थिति है:मैं तुलनात्मक रूप से एक से अधिक बार कैसे कार्यान्वित कर सकता हूं?
मैंने मिला निम्नलिखित वर्गों/इंटरफेस:
interface Foo extends Comparable<Foo>
interface Bar extends Comparable<Bar>
abstract class BarDescription implements Bar
class FooBar extends BarDescription implements Foo
इस के साथ
, मैं त्रुटि मिलती है 'इंटरफ़ेस तुलनीय अलग तर्क के साथ एक से अधिक बार लागू नहीं किया जा सकता है ...'
मेरे पास FooBar में लागू की गई तुलना (Foo foo) क्यों नहीं हो सकती है, और बारडिस्क्रिप्शन में लागू की गई तुलना (बार) की तुलना भी नहीं की जा सकती? क्या यह बस विधि अधिभार नहीं है?
संपादित करें: मेरे पास कई कक्षाएं हैं जो बारडिस्क्रिप्शन का विस्तार करती हैं। यदि मैं बार पर तुलनात्मक के लिए प्रकार पैरामीटर को हटा देता हूं, इसे कच्चे राज्य में छोड़ देता हूं, तो मुझे बारडिस्क्रिप्शन को बढ़ाने वाले सभी वर्गों को सॉर्ट करते समय कंपाइलर चेतावनियों का एक गुच्छा मिलता है। क्या इसे नीचे वाइल्डकार्ड के जवाब के साथ हल किया जाएगा? यह जवाब रखरखाव के लिए समझने में काफी जटिल और मुश्किल लग रहा है।
वही प्रश्न, अलग मामला। आप टाइप एरर नामक कुछ ढूंढ रहे हैं। – falstro
@row कुछ वाइल्डकार्ड कहा जाता है। –
@ कोडमैन 73: लेकिन आप बस जावा में ऐसा नहीं कर सकते ... जावा सच पैरामीट्रिक बहुरूपता का समर्थन नहीं करता है। यही कारण है कि जब आप "जावा idiosynchrasies" के बजाय "ओओ" पर ध्यान केंद्रित करते हैं तो जावा जेनरिक ज्यादातर व्यर्थ हैं: निश्चित रूप से, वे "संग्रह" और प्रक्रियात्मक कार्यक्रम के लिए ठीक हैं (और इसलिए 99% की मानसिकता अच्छी तरह से फिट हैं वहां जावा डेवलपर्स) लेकिन यह बिल्कुल ओओ नहीं है। जावा में जेनेरिक के साथ यह मेरी सबसे बड़ी पकड़ है: आपके पास * हैंडबल * और * हैंडबल * नहीं हो सकता है और जो ओओ पॉइंट व्यू से जेनेरिक ** बेकार ** प्रस्तुत करता है। –
SyntaxT3rr0r