<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    蘋果的成長日記

    我還是個青蘋果呀!

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      57 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks
      主要有以下幾個方面需要注意:
    1.重寫equals()和hashCode()
      當真正需要了解兩個引用是否完全相同時,使用==。但是,當需要了解對象本身是否相等時,使用equals()。實際上是要比較兩個不同對象的內容在意義上是否等價,除了String類和封裝器類(已重寫了equals()),需要重寫equals().Object內的equals()的方法只使用==運算符進行比較,因此,除非重寫equals(),否則只有當兩個引用引用相同的對象時,這兩個對象才被看做是相等的。另外,如果要使類對象能夠用作散列表的鍵(或者任何數據結構中用于搜索和/或檢索對象的元素),則必須重寫equals(),使兩個不同實例能夠被看做是相同的。
      我們一般這樣重寫:
      public boolean equals(Object o) {
         if(o instanceof  Moof) && ((Moof)o).getMoofValue() ==  this.moofValue)) {
            return true;
       } else {
           return false;
      }
    }
    上面執行了兩個操作:
     1)確保所測試對象的類型是正確的!用instanceof
     2)比較我們關心的屬性
    注意: equals()、hashCode()和toString()方法都是公有的。下面這種重寫是無效的,
        class Foo {
              boolean equals(Object o) { }
    }
     一定還要注意參數類型。下面方法是對equals()方法的重載,而不是重寫。
        class Foo {
           public boolean equals(Foo b) { }
    }
    一定要非常熟悉重寫規則,要能夠識別類中對Object方法的重寫、重載還是非法重新聲明。在Foo類中,equals()方法把參數從Object修改為Foo,因此,它是一個重載方法,除非從你自己的代碼(它知道這個新的不同方法,而且碰巧被命名為equals)中調用,否則,它不會被調用。
    java API中,在equals()方法內定義了一種約定。java約定是一套應該遵守的規則,或者說是想提供其他人所期望的“正確”設計時必須要遵守的內容。有5點:
     1.自反性: x.equals(x)應該返回true;
     2.對稱性:當且僅當y.equals(x)返回true時,x.equals(y)才返回true。
    3.可傳遞性
    4.一致性
    5.任何非空引用值x,x.equals(null)應該返回false.
    如果使用equals()方法,兩個對象被認為是相等的,則它們必須具有相同的散列碼值。因為Object類的默認散列碼總是為每個對象產生一個唯一號,即使重寫的equals()方法認為兩個或多個對象是相等的,也是這樣。所以,為了安全起見,如果重寫equals(),一定也要重寫
    hashCode().
    posted on 2005-06-26 15:07 蘋果 閱讀(1396) 評論(0)  編輯  收藏 所屬分類: J2EE/JAVA學習
    主站蜘蛛池模板: 亚洲a视频在线观看| 亚洲不卡中文字幕无码| 亚洲乱人伦中文字幕无码| 67pao强力打造高清免费| 亚洲视屏在线观看| 亚洲免费在线观看视频| 亚洲成年网站在线观看| 成人A级毛片免费观看AV网站| 亚洲av午夜精品无码专区| 免费看国产精品3a黄的视频| 亚洲中文字幕AV在天堂| 午夜精品在线免费观看| 美女被爆羞羞网站在免费观看| 免费在线观看亚洲| 两性色午夜视频免费播放| 亚洲国产成人精品无码区在线观看| 久久精品国产大片免费观看| 亚洲视频在线观看视频| 女人18毛片特级一级免费视频| 久久精品熟女亚洲av麻豆| 精品亚洲一区二区三区在线观看 | 夜夜嘿视频免费看| 精品免费AV一区二区三区| 中文字幕第13亚洲另类| 一级做a爰全过程免费视频| 亚洲jizzjizz在线播放久| 免费jjzz在线播放国产| 两个人看的www免费视频中文| 亚洲精品国产成人中文| 免费鲁丝片一级观看| 人人公开免费超级碰碰碰视频| 久久精品国产96精品亚洲| 中文字幕在线免费观看| 亚洲av无码一区二区三区在线播放| 久久亚洲国产成人影院网站 | 亚洲欧美日韩中文高清www777| 亚洲成av人在片观看| 99热在线精品免费播放6| 亚洲a∨无码一区二区| 亚洲av午夜成人片精品网站 | 色视频在线观看免费|