憨厚生

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

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

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

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

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

          評論

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

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

          # re: 關于ArrayList類的疑惑! 2009-10-27 09:32 凌晨風
          同意樓上的  回復  更多評論
            

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

          # re: 關于ArrayList類的疑惑! 2009-10-27 09:40 charlie's logic
          為了強調接口編程。

          List list=new ArrayList();





            回復  更多評論
            

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

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

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

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

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

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

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

          主站蜘蛛池模板: 五指山市| 浏阳市| 当涂县| 龙川县| 杂多县| 孝感市| 琼结县| 山东| 三明市| 南召县| 渝北区| 楚雄市| 海兴县| 叶城县| 建德市| 建昌县| 交口县| 六枝特区| 大理市| 竹溪县| 瓦房店市| 阿瓦提县| 尉犁县| 民权县| 大宁县| 中西区| 屏山县| 南通市| 左贡县| 集贤县| 芒康县| 法库县| 渝中区| 福州市| 延川县| 乌拉特前旗| 芒康县| 巴里| 兰溪市| 大埔县| 浦北县|