java - 我什么时候应该覆盖 Equals 函数?

标签 java

Possible Duplicate:
Java: Always override equals?

我应该为我创建的任何类重写 equals 函数吗?

即使对于只包含一些非常简单的属性的非常简单的类,并且 equals 我需要它的每个属性都相等?

最佳答案

should I override equals function for any class that I create?

覆盖 equals 如果(且仅当)对象“表示某些数据”,即如果它对诸如 PersonCar 之类的东西建模或 RecipieIngredient (这些通常以集合等形式结束)。不要为其他类型的类覆盖 equals,例如 LoginServletDatabaseUtil

请记住,每当您覆盖 equals 时,请始终覆盖 hashCode

(A natural follow-up question:) What happens if I don't override equals and hashCode?

任何两个对象都将被视为不相等,除非它们是完全相同的对象。

[...] I need every single attribute of it to be equal?

通常。这取决于如何定义你的平等概念。请注意,对于引用类型,您可以在实现自己的时重用/委托(delegate)给 that 对象实现 equals(和 hashCode)。

相关问题:

关于java - 我什么时候应该覆盖 Equals 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010626/

相关文章:

Java 线程 : Should all shared variables be Volatile ?

java - 从另一个实体上的操作触发实体上的操作 Spring data JPA

java - BouncyCaSTLeProvider 无法在 Mac OSX 上的 Tomcat 7 启动时加载

java - 使用来自 Maven 的内联 jar 文件构建 osgi 包

java 哈夫曼树优先级

java - 使用日期选择字符串 - android studio - java

java - 在充当服务器的 servlet 内进行套接字编程,启动某种服务器推送环境是一个好的解决方案吗?

java - 方法中的许多参数与特定参数

java - 延长 Lollipops "heads-up"通知持续时间

java - 使用 spring-data-jpa 查询方法加载实体的属性