憨厚生

          ----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 二胡 閱讀(1890) 評論(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 接口的,而不需要一直回溯去找。  回復  更多評論
            

          主站蜘蛛池模板: 阿拉善右旗| 濮阳市| 邹城市| 墨竹工卡县| 门头沟区| 高密市| 资兴市| 日喀则市| 九龙县| 萨嘎县| 仁化县| 长垣县| 仪陇县| 永康市| 崇义县| 长岭县| 白水县| 炎陵县| 金山区| 阳东县| 洞头县| 金沙县| 绥芬河市| 陇南市| 台湾省| 修水县| 祁门县| 依兰县| 平安县| 积石山| 广西| 达拉特旗| 北辰区| 兴化市| 登封市| 库伦旗| 子长县| 陇西县| 深圳市| 江都市| 阿拉善右旗|