हैश कोड अलग-अलग वस्तुओं के लिए अलग होने की आवश्यकता नहीं है। एकमात्र आवश्यकता यह है कि वे बराबर वस्तुओं के लिए समान होना चाहिए।
यदि यह चिंता का विषय है कि आपकी SwingWorker
आंतरिक कक्षाएं समान हैश कोड उत्पन्न करती हैं, तो आप अपनी आंतरिक आवश्यकताओं में उपयुक्त हैश कोड प्रदान करने के लिए अपनी आंतरिक कक्षा में hashCode
विधि को ओवरराइड कर सकते हैं। बेशक आप equals
ओवरराइड करने के लिए और साथ ही दोनों तरीकों के लिए मिलान तर्क की आपूर्ति करने की आवश्यकता होगी:
final int workerId = 123;
SwingWorker<String,Object> myWorker = new SwingWorker<String,Object> {
@Override
public String doInBackground() {
...
}
@Override
protected void done() {
...
}
@Override
public int hashCode() {
return workerId;
}
@Override
public boolean equals(Object other) {
return other == this;
}
}
'' SwingWorker' hashCode' लागू नहीं है और इसलिए 'Object' के कार्यान्वयन कहा जाता है। इसके जावडोक पढ़ें। –