在覆盖 equals
和 hashCode
方法时,必须考虑哪些问题/陷阱?
在覆盖 equals
和 hashCode
方法时,必须考虑哪些问题/陷阱?
我发现一个坑点是两个对象互相引用(一个例子是具有方便的父/子关系方法的父对象可以获取所有子对象)。
在进行Hibernate映射时,这些情况比较常见。
如果你在hashCode或equals测试中包含关系的两端,可能会进入递归循环,最终导致StackOverflowException异常。
最简单的解决办法是不在方法中包含getChildren集合。