微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果对象类型来自编译的 .class 文件,如何避免在 Set 中存储重复项?

如何解决如果对象类型来自编译的 .class 文件,如何避免在 Set 中存储重复项?

我正在尝试将对象存储在 Set 中以避免重复

正如此 topic 解释的那样,我需要@Override 两种方法hashCode()equals(Object obj)

我试图存储在上述 Set 中的对象类型来自编译的 .class 文件,它没有hashCode()equals(Object obj) 方法以及它在继承链上的父级(Object 除外)。

有没有办法将它们存储在 Set 中以避免重复

解决方法

如果你不能修改对象,那么你可以包装它们。

class EmployeeHolder {
  private final Employee employee;
  public int hashCode() { ... }
  public boolean equals(Object o) {
    if (!(o instanceof EmployeeHolder)) return false;
    ...
  }
}
Set<EmployeeHolder> set = new HashSet<>();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。