You are coming a long way, baby~Thinking, feeling, memory...
Tin是一个热爱收集最佳实践的程序员。曾经在小型Java团队中担任架构师,后在新浪邮件部门领导RIA团队进行开发,目前是自由程序员,接受Java/ RIA/ RoR项目和咨询。 业余时间积极进行敏捷实践和参与社区讨论,对RoR和Django感兴趣。在社区中还积极参与开源项目的文档中文化工作。目前为InfoQ中文站做社区编辑。 业余爱好:编程、硬件、Mac、美术、音乐(Rock)、电影、摄影、集图、集邮、Quake3、旅行、美食
hashCode:他是用来产生hash值的,用在Hashtable上,也包括HashMap等实现。hashCode的基本约定是:1、hashCode方法在同一个object上不管被调用了多少次,在同一次执行的Java程序中,hashCode方法必须返回一个持续相同的int。在object被修改时,不给equals方法提供信息。这个int值在同一个程序的两次不同执行过程中(同一程序执行两次),不需要保持恒定。2、如果两个object通过equals()方法判断相等,则调用它们的hashCode方法应该产生相同的结果。3、两个通过equals()方法判定不相等的object,调用它们的hashCOde方法并不是必须返回不同的结果。但是,成序言们应该意识到对于不相等的object产生不同的int结果有助于提升hashtables的效率。一般技术上,通过将object的内部地址转换为integer的方法来产生hashCode,但这不是必需的。
equals:就是判断是否相等的方法。基本约定如下:自反:就是x.equals(x)应该返回true对称:x.equals(y)返回true则y.equals(x)返回true传递:x.euqls(y)==true,y.equals(z)==true,那么x.equals(z)也必须返回true持续性:就是说如果x.equals(y)==true,不管它调用多少次都应该返回true非空引用:x.equals(null)应该返回false
准则原因这里:http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()在实际Domain中如何实现他们比较好呢?从eclipseWork中的模板生成如下:
Powered by: BlogJava Copyright © Tin