java - 内部类的不同实例的 hashCode 可以相同吗?

标签 java

我有一个自定义的 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/

相关文章:

使用 FXML 的 JavaFX UI 控件架构(Control+Skin)

java - 当我的应用程序失去连接时,我应该如何恢复它?

java - 在 foreach 循环中选择特定项目?

java - Class.forName() 是什么意思

java - 尝试使用 Sugar ORM 插入两个字段时应用程序停止工作

java - 如何使 JavaFX 上下文菜单中的 MenuItems 支持 onMouseOver 事件

java - 特征检测

java - 是否有逐步执行流程的任何模式/方式?

java - 如何使用 Dozer 将字符串值映射到字符串列表?

java - 重写匿名内部类方法不起作用