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