【发布时间】:2016-10-22 22:03:25
【问题描述】:
大家好,谢谢,
我目前想知道是否有适合我情况的最佳实践。
- 假设你有一个对象。假设是 Customer 类型的对象。
- 在客户对象中,您有 (n-1) 个字段。
- 现在你正在通过 Eclipse 上下文菜单 >> 源 >> 生成 hashCode() 和 equals() 实现 hashCode 和 equals 方法... 它使用所有 (n-1) 个字段来执行此操作。在一般情况下,这实际上并不是一件坏事。
在特定方法中的单独服务类中,您有一个客户列表 >> 列出 myCustomers。
在此方法中,您使用条件 myCustomers.contains(specificCustomer) 实现 if-else 案例。
if (myCustomer.contains(specificCustomer)) {
// todo
} else {
// todo
}
所以 list.contains(obj) 在内部使用了对象的 equals 方法。这是检查列表是否包含对象的一般方法。
但是 在我的情况下,我已经使用所有(n-1)字段实现了标准的 hashCode 和 equals。而我想要的是使用一个/.contains(obj) 方法,它只检查对象的特定字段,例如 (n-5) 个字段。
我不想修改现有的 hashCode 和 equals,因为代码的其他部分已经在使用它。如果我这样做,我无法预测之后的行为。
我也不想在 Customer 类中编写单独的方法,并且只在 if-else-condition 中使用它。
那么,有没有人有想法、最佳实践或很好的模式来完成这项工作?
【问题讨论】:
-
尽量不要搜索最佳实践,它们通常是基于意见的
-
我的基于意见的解决方案:创建使用 N-5 个字段的方法 equalsXXX,创建一个迭代列表并使用 equalsXXX 方法检查相等性的方法
标签: java collections equals contains