我定义一个父类Line和一个子类Plane,再定义一个测试类Test,在其main主方法下写
    List<? extends Line> al=new ArrayList<Plane>();
在al下点add方法看到的是add(null arg0) boolean
只可以向al中加入null
我用的是MyEclipse5.5 jdk 5.0
为什么是null,不是Plane?

解决方案 »

  1.   

    Type mismatch: cannot convert from ArrayList<b> to List<a>
    类型不匹配呀
      

  2.   

    因为你没有指定ArrayList中的元素的类型,只是指定了该链表中元素必须是Line的子类,所以IDE不知道是什么东东,就用null表示了,如果你这样做ArrayList<Plane> al = new ArrayList<Plane>();这样IDE就知道al中的元素是Plane了,CodeAssist就联想出来了
      

  3.   

     List <? extends Line> al=new ArrayList <Plane>(); 
    使用通配符不能使用 add()方法,他只是多态的一种。
    你这样想就行了, al 里面只能有一个类型。 如果 可以add()的话。
    那么,问题来了, 只要是 line的 子类 或者 line 本身都可以加进去,al里面什么都有。那还叫什么泛型啊 
    直接List  al=new ArrayList(); 不就得了,还要这么麻烦干嘛。 
    我也是自己自学的,如果说的不对,请楼下的继续指正。
      

  4.   

    ArrayList<Plane> al = new ArrayList<Plane>()