解决方案 »

  1.   

     //  对象可以使用父类引用指向子类对象,集合不可以,泛型必须精确类型
     //   把 LinkedList<? extends A> list  改为 LinkedList<C> list    
     LinkedList<C> list = null;     // LinkedList<? extends A> list = null;
     list = new LinkedList<C>();
     list.add(new C(12));   

      

  2.   

    谢谢 回复也就是说 如果不使用 泛型集合类 例如 MyClass<? extends A>  myClass = null;    myClass = new MyClass<C>();
    myClass.add(new C(12)); 就没问题咯?
      

  3.   

    LinkedList<? extends A> list = null;
    这句话表明list中存的是A的子类,但这种描述是模糊的,不能确定到底是哪个子类,可能是B,也可能是C,所有编译器只允许list.add(null).因为null是所有类的子类。
    不过可以将extends改成super,这样上面就不会报错了,因为LinkedList<? superA> list = null;表明?是A的父类,那么不论是B还是C必然都是?的子类,故不报错。
    建议楼主去研究下上下边界通配符类型  的get,set使用。
    附:
    当使用get方法时,尽量用上边界限定通配符当使用set或add方法时,尽量使用下边界限定通配符