5

我有一个自定义的SwingWorker内部类。我多次发现它们的哈希码对于它的不同实例是相同的。这是为什么?普通的?

编辑:

我拥有的内部类是该类的子SwingWorker类。

4

1 回答 1

7

对于不同的对象,哈希码不需要不同。唯一的要求是它们对于相等的对象必须相同。

如果担心您的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;
   }
}
于 2013-09-04T14:39:54.230 回答