问题描述
我正在尝试将对象存储在 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<>();