2013-09-04 8 views

Antwort

7

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; 
    } 
} 
Verwandte Themen