public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable在ArrayList的声明中,其继承了抽象类AbstractList,该抽象类已经实现了List<E>接口,所以 ArrayList<E>也就等于实现了List<E>接口。
那么为什么在声明中还需要再次声明实现List<E>接口??????????

解决方案 »

  1.   

    http://www.cnblogs.com/bluejavababy/p/4320545.html这里有你要的答案
      

  2.   

    这里有一篇 关于 ArrayList 的源码
    你可以学下
    go javafor.com
      

  3.   

    当然是为了可维护性啊,这不就是面向对象的思维吗,1. 增加可读性,可以清晰看到类的主要实现接口。 
    2. 降低维护成本,如果哪天AbstractList不在实现List接口,我也不会受到影响。  比如说,你老爸可以继承你爷爷一套房子,   你也有权继承你老爸的房子,也有权继承你爷爷的房子。这些都是资产。但是,假如你老爸因为做生意亏了N钱,把自己的房子卖给了银行,还欠一屁股债。  那么这时候,你爷爷害死不可能把他的那一套房子再搭进去了,这时候你就只能直接继承你爷爷的房子,而不是你老爸继承过来再给你。
    这里ArrayList差不多一个意思吧,如果哪天你的AbstractList报废了,那么至少你还有得LIST用。
      

  4.   

    其实我觉得你说的那个答案很有道理,你发现一个问题没有?其实你还发现一个问题没有,我还搜索到一个答案,是一个stackoverflow上的,一个作者说他联系过这部分源码的作者,作者的回答是it‘s a mistake.哈哈你知道什么了?
      

  5.   

    I've asked Josh Bloch, and he informs me that it was a mistake. He used to think, long ago, that there was some value in it, but he since "saw the light". Clearly JDK maintainers haven't considered this to be worth backing out later