/ / जावा में जावा, शब्दकोश, चेतावनियों में अनियंत्रित चेतावनी को खत्म करना

जावा - जावा, शब्दकोश, चेतावनियों में एक अनियंत्रित चेतावनी को खत्म करना

मैं ओवरराइड कर रहा हूँ equals() एक वर्ग के लिए मैंने बनाया है। एक प्रकार मैं उम्मीद कर रहा हूँ Map<String,String>

मैंने निम्नलिखित किया।

public boolean equals(Object o) {
if (o instanceof Map<String, String>) {
return equalsMap((Map<String, String>) o);
}

और यह त्रुटि मिली:

पैरामीटर प्रकार के खिलाफ इंस्टोफ़ चेक नहीं कर सकता Map<String,String>। फार्म का उपयोग करें Map<?,?> इसके बजाय चूंकि आगे चलकर सामान्य प्रकार की जानकारी रनटाइम पर मिट जाएगी

इसलिए मैंने इसे निम्नलिखित में बदल दिया, जो इसे लिया:

@Override
public boolean equals(Object o) {
if (o instanceof Map<?, ?>) {
return equalsMap((Map<String, String>) o);
}

(पहले वाले के पास है @Override इसमें भी, लेकिन मैं इसे कॉपी करना भूल गया और अब इसने "टी लेट मी" जीता।

जब मैंने उपर्युक्त किया तो यह संकलित करता है, लेकिन अब मुझे यह चेतावनी बिना किसी सुझाव के मिली

प्रकार की सुरक्षा: वस्तु से अनियंत्रित कास्ट Map<String,String>

मैं समझ सकता हूं कि इसमें कुछ भी हो सकता है Map<?,?> लेकिन मैंने इसे और अधिक विशिष्ट बनाने के लिए ऊपर प्रयास किया और इसने मुझे त्रुटि दी और मुझे उपयोग करने के लिए कहा इसलिए मुझे यकीन नहीं है कि क्या करना है यह सब सुझाव है कि उपयोग करना है SuppressWarnings "unchecked" (मैं एक त्रुटि प्राप्त किए बिना यहां साइन पर टाइप नहीं कर सकता) जो मुझे ठीक लगता है, लेकिन मुझे शुरू करने के लिए चेतावनी नहीं होगी

उत्तर:

जवाब के लिए 0 № 1

यदि आप चेतावनी नहीं चाहते हैं, तो एकमात्र समाधान होने जा रहा है

if (o instanceof Map<?, ?>) {
return equalsMap((Map<?, ?>) o);
}

और अपने बनाने के लिए equalsMap विधि मनमानी के लिए सही काम करते हैं Map प्रकार के।