说我有我自己的class级 public class MyObj { /* … */ } 它有一些属性和方法。 它不实现equals,不实现hashCode。 一旦我们调用equals和hashCode,默认的实现是什么? 从对象类? 他们是什么? 如何默认等于将工作? 默认的hashCode将如何工作,将返回什么? ==只会检查它们是否引用同一个对象,所以很容易,但equals()和hashCode()方法呢?
我很想知道,这里的人们在考虑使用org.apache.commons.lang.builder EqualsBuilder / HashCodeBuilder来实现equals / hashCode ? 这会比写自己的做法更好吗? 它与Hibernate一起玩吗? 你怎么看?
我阅读了基本的C#3.0和.NET 3.5书: 即使对象的数据发生变化,GetHashCode()在特定对象的生命周期内的返回值也应该是常数(相同的值)。 在许多情况下,您应该caching方法返回来执行此操作。 这是一个有效的指导方针吗? 我已经在.NET中尝试了几个内置types,他们不像这样。
我有这个testing代码: import java.util.*; class MapEQ { public static void main(String[] args) { Map<ToDos, String> m = new HashMap<ToDos, String>(); ToDos t1 = new ToDos("Monday"); ToDos t2 = new ToDos("Monday"); ToDos t3 = new ToDos("Tuesday"); m.put(t1, "doLaundry"); m.put(t2, "payBills"); m.put(t3, "cleanAttic"); System.out.println(m.size()); } } class ToDos{ String day; ToDos(String d) { day = d; } public […]
最近我读了这个开发工程文件 。 这个文档是关于如何有效而正确地定义hashCode()和equals() ,但是我无法弄清楚为什么我们需要重写这两个方法。 我怎样才能有效地实施这些方法?