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

How to avoid storing duplicates in a Set if the objects type comes from a compiled .class file?

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

因为这个 topic 解释我需要 @Override 两种方法:hashCode()等于(对象对象).

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

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

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

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<>();