憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks
                  在JAVA原代碼中可以看到ArrayList類的實現(xiàn).其中定義ArrayList類的時候,如下

                  public class ArrayList<E> extends AbstractList<E>
                      implements List<E>, RandomAccess, Cloneable, java.io.Serializable
                  
                  在這里我有個疑惑,ArrayList繼承了AbstractList,而AbstractList實現(xiàn)了List接口.為什么不直接這樣寫呢,如下:

                  public class ArrayList<E> extends AbstractList<E>
                      implements RandomAccess, Cloneable, java.io.Serializable

                  那個能解釋一下!謝謝先!
          posted on 2009-10-27 08:53 二胡 閱讀(1890) 評論(10)  編輯  收藏 所屬分類: Java

          評論

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 09:13 yezi
          哈哈,這個我也不知道。你看看spring源碼中的,也存在這樣的問題  回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑![未登錄] 2009-10-27 09:25 Jet
          這是一種編碼習(xí)慣,這樣做的好處在于ArrayList類不會忘記實現(xiàn)List接口中的方法。  回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 09:32 凌晨風(fēng)
          同意樓上的  回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 09:33 zhxing
          我覺得應(yīng)該是方便于擴(kuò)展吧。。
          下面是java doc 上說得
          public abstract class AbstractList<E>extends AbstractCollection<E>implements List<E>此類提供 List 接口的骨干實現(xiàn),以最大限度地減少實現(xiàn)“隨機(jī)訪問”數(shù)據(jù)存儲(如數(shù)組)支持的該接口所需的工作。對于連續(xù)的訪問數(shù)據(jù)(如鏈表),應(yīng)優(yōu)先使用 AbstractSequentialList,而不是此類。
            回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 09:40 charlie's logic
          為了強(qiáng)調(diào)接口編程。

          List list=new ArrayList();





            回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 09:51 feenn
          @charlie's logic
          re  回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 09:59 二胡
          @charlie's logic
          AbstractList 類也實現(xiàn)了List接口的
          所以我認(rèn)為,也可以寫成
          List list=new ArrayList();

          注:AbstractList類定義如下:
          public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {  回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 11:06 raymon
          我以前也注意到這個問題了, 想著可能是編程規(guī)范上的事。

          還專門做了個試驗,看不加“implements List”行不行, 當(dāng)然是沒問題的。   回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-27 11:18 charlie's logic
          推薦去stackoverflow.com/ 問一下,看看老外什么解釋?  回復(fù)  更多評論
            

          # re: 關(guān)于ArrayList類的疑惑! 2009-10-28 08:06 隔葉黃鶯
          jdk 源代碼許多這樣的寫法,因為 implements 是沒有污染性的,讓你看到 ArrayList 能直接意識到那是實現(xiàn)了 List 接口的,而不需要一直回溯去找。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 赤壁市| 延吉市| 武陟县| 仁布县| 南昌县| 长丰县| 隆回县| 七台河市| 华容县| 惠安县| 靖江市| 江城| 巩义市| 临海市| 堆龙德庆县| 临漳县| 乡城县| 运城市| 万山特区| 郎溪县| 屯昌县| 台中县| 侯马市| 江陵县| 江津市| 弥渡县| 彰化县| 旅游| 多伦县| 沧州市| 喀喇沁旗| 松江区| 石家庄市| 偏关县| 合水县| 凤冈县| 上栗县| 和顺县| 伊吾县| 邓州市| 常山县|