为什么说 ArrayList 是List的子类 但不等于说ArrayList <Integer>  是List<Integer>的子类  ?

解决方案 »

  1.   

    因为ArrayList继承了List啊, 你这是什么问题啊
      

  2.   

    List<Integer>这个是多态,本质还是创建的他的实现类的对象,比如ArratList<Integer>对象的多态
      

  3.   

    这个ArrayList是泛型后就限制了存入的数据,应该类型就和List不一样了吧  讲道理这个问题没得任何意义
      

  4.   

    为什么说 ArrayList 是List的子类 但不等于说ArrayList <Integer>  是List<Integer>的子类  ?
    ArrayList <Integer>  是List<Integer>的子类!可以这么理解的。java中泛型的用途只是为了指定类型,供编译使用,当然也可以优化代码接口,简化代码书写方式。java中的泛型其实已经偏离了泛型 的概念了,个人感觉。
      

  5.   

    “ArrayList 是List的子类 但不等于说ArrayList <Integer>  是List<Integer>的子类”
    这句话本身就有待商榷。敢问此语句出处?个人认为,你也可以说“ArrayList <Integer>  是List<Integer>的子类”,只是我们一般不那么说。
    就好比,我们会说“孔鲤是孔子的儿子”,但不会说“穿长袖的孔鲤是穿长袖孔子的儿子”。父子类关系,在java诞生之初就有的(jdk1.0),泛型是 jdk5.0 以后添加的某一属性。
    表达父子类关系也是无关此属性的。(好比上面的例子,血缘关系和衣着无关)
      

  6.   

    泛型提高了代码的安全性和可读性。
    比如向ArrayList放入一个Integer,取出的时候必须强制类型转换Integer i = (Integer)arraylist.get(0);
    ArrayList<integer>就告诉大家要放的就是integer类型,其他的类型放不了,取出来的就是Integer。
    泛型对extends和implements没有影响,只是限定了类型,ArrayList <Integer> 就是一个实现了List<Integer>接口的类。要注意的是类 B extends A,但ArrayList<B>并不是一个ArrayList<A>