मेरी प्रोजेक्ट पर FindBugs चलाते समय, मुझे ऊपर वर्णित त्रुटि के कुछ उदाहरण मिल गए।Findbugs चेतावनी: समान विधि को इसके तर्क के प्रकार के बारे में कुछ भी नहीं मानना चाहिए
अर्थात्, बराबर के मेरे ओवरराइडिंग संस्करणों ने आरएचएस ऑब्जेक्ट को उसी प्रकार के रूप में डाला जिस पर ओवरराइडिंग संस्करण परिभाषित किया गया है।
हालांकि, मुझे यकीन नहीं है कि एक बेहतर डिज़ाइन संभव है, क्योंकि AFAIK जावा विधि पैरामीटर में भिन्नता की अनुमति नहीं देता है, इसलिए बराबर पैरामीटर के लिए किसी अन्य प्रकार को परिभाषित करना संभव नहीं है।
क्या मैं कुछ गलत कर रहा हूं, या FindBugs बहुत उत्सुक है?
इस सवाल का वाक्यांश करने का एक अलग तरीका यह है कि यदि वस्तु बराबर होती है तो सही व्यवहार क्या होता है, यह एलएचएस के समान नहीं होता है: क्या यह गलत है, या अपवाद होना चाहिए?
उदाहरण के लिए:
public boolean equals(Object rhs)
{
MyType rhsMyType = (MyType)rhs; // Should throw exception
if(this.field1().equals(rhsMyType.field1())... // Or whatever
}
जो थोड़ा अजीब लगता है। कृपया हमें कुछ कोड दिखाएं। –