憨厚生

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

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

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

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

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

          評(píng)論

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

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

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

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

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

          List list=new ArrayList();





            回復(fù)  更多評(píng)論
            

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

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

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

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

          還專門(mén)做了個(gè)試驗(yàn),看不加“implements List”行不行, 當(dāng)然是沒(méi)問(wèn)題的。   回復(fù)  更多評(píng)論
            

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

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

          主站蜘蛛池模板: 小金县| 九龙县| 扶绥县| 云林县| 乌鲁木齐县| 宝坻区| 信丰县| 呈贡县| 呼伦贝尔市| 股票| 来安县| 怀远县| 苍南县| 洪雅县| 荥阳市| 柳州市| 邵武市| 安达市| 阿合奇县| 姚安县| 星子县| 浑源县| 保山市| 灌云县| 林西县| 普定县| 晋城| 柳江县| 聂拉木县| 玉环县| 常宁市| 环江| 泰和县| 临朐县| 浦北县| 德钦县| 南投县| 麟游县| 阜康市| 新晃| 甘泉县|