说我有自己的课程
public class MyObj { /* ... */ }
它具有一些属性和方法。它不实现等于,不实现hashCode。
一旦我们调用equals和hashCode,默认的实现是什么?从对象类?那是什么
默认值等于如何工作?默认的hashCode将如何工作,返回什么?==只会检查它们是否引用同一个对象,因此很容易,但是equals()和hashCode()方法呢?
是的,默认实现是Object的实现(通常来说;如果您从重新定义了equals和/或hashCode的类继承,则将改用该实现)。
从文档中:
equals
类Object的equals方法在对象上实现了最有区别的对等关系。也就是说,对于任何非空参考值x和y,当且仅当x和y引用同一个对象(x ==
y的值为true)时,此方法才返回true。
hashCode
在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。(通常通过将对象的内部地址转换为整数来实现,但是JavaTM编程语言不需要此实现技术。)
下面是记录和类的代码示例 执行后,上述代码的输出为: 有谁能帮我了解一下record的默认equals和hashcode实现的行为与上面有什么不同吗? 如果equals和hashcode实现中有更改,则进行记录。那么请帮助我理解这个变化的确切目的是什么,以及在哪些情况下使用它会更有帮助。 提前感谢!!
我试图覆盖提到的方法为我的: MyObject: 如何重写hashcode(),equals()和compareTo()方法? 目前我有以下几点: 我读到通过id比较是不够的,这是对象是数据库的持久实体(见这里)。 此类型的所有对象的名称和编号不是唯一的。 那么我应该如何覆盖它呢? 我还需要比较它里面的hashMap吗? 我很困惑。该对象唯一独特的地方是map myMap,它将在生命周期的后期填充
问题内容: 我应该如何实施和在Java下面的类? 问题答案: 在Eclipse中,右键单击->源->生成hashCode(),然后equals()给出以下信息: 我已选择代码作为唯一字段
我们正在编写一个类,它需要非常复杂的逻辑来计算equals()和hashCode()。类似于:
我有这样的记录: 它获取default和方法。 如何调整这些方法使其具有自定义行为?假设,我想忽略方法中的。
问题内容: 建议和有时是必要的,即表示值(类 值类 )来覆盖,[和任选]的方法。这些方法返回的值取决于类及其超类的成员变量的全部或子集。为了实现它们正常,你必须了解理论的一点点 散列 和代数和集理论的一点点(不要太多,几乎一切都在explaind 的javadoc 这些方法和有效的Java形式乔希布洛赫。) 在大多数情况下,此方法的实现遵循一个模板,并且IDE(如Eclipse JDT)包括生成它