如何解决如果对象类型来自编译的 .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 举报,一经查实,本站将立刻删除。