Hash-Codes müssen für verschiedene Objekte nicht unterschiedlich sein. Die einzige Voraussetzung ist, dass sie für gleiche Objekte gleich sein müssen.
Wenn es Bedenken gibt, dass Ihre inneren Klassen SwingWorker
identische Hash-Codes erzeugen, können Sie die hashCode
-Methode in Ihrer inneren Klasse überschreiben, um Hash-Codes bereitzustellen, die Ihren Anforderungen besser entsprechen. Natürlich müssen Sie equals
auch außer Kraft zu setzen, die Übereinstimmungslogik für beiden Methoden zu liefern:
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' nicht implementiert' hashCode' und deshalb 'Object' Implementierung genannt wird. Lesen Sie seinen Javadoc. –