我有一个自定义的 SwingWorker
内部类。我多次发现它们的哈希码对于它的不同实例是相同的。这是为什么?正常吗?
编辑:
我的内部类是 SwingWorker
类的子类。
最佳答案
不同对象的哈希码不需要不同。唯一的要求是对于相同的对象,它们必须相同。
如果担心您的 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;
}
}
关于java - 内部类的不同实例的 hashCode 可以相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18616717/