高/等于@所有和THX提前,具体比较了List.contains(OBJ)
我目前不知道是否有我的情况有很大最佳实践。
- 考虑你有一个对象。假设一个Customer类型的对象。
- 在客户对象中,您有(n-1)个字段。
- 现在你正在通过eclipse上下文菜单实现hashCode和equals方法>> Sources >>生成hashCode()和equals()... 它使用所有(n-1)字段来实现。在一般情况下,这其实并不是一件坏事。
在特定的方法中,在一个单独的服务类中增加额外的客户>>列表myCustomers。
在这种方法中,我使用条件myCustomers.contains(specificCustomer)实现一个if-else的情况。
if (myCustomer.contains(specificCustomer)) {
// todo
} else {
// todo
}
所以list.contains(obj)在内部使用对象的equals方法。这是检查列表是否包含对象的一般方法。
但是 在我的情况下,我有标准的hashCode,并且等于allready已经实现所有(n-1)字段。我想要的是使用/ .contains(obj)方法,它只检查对象的特定字段,例如(n-5)字段。
我不想修改现有的hashCode和equals,因为代码的其他部分已经在使用这个。如果我这样做,我无法预测事后的行为。
另外我不想在Customer类中编写一个单独的方法,只在if-else条件中使用它。
那么,有没有人有一个想法,最佳实践或伟大的模式,以完成这项工作?
尝试不搜索最佳实践,他们通常是基于意见的 – AdamSkywalker
我的意见为基础的解决方案:创建使用N-5字段的方法equalsXXX,创建迭代列表并使用equalsXXX方法检查相等性的方法 – AdamSkywalker