方法中有一项的代码:
List<Integer> bs=new ArrayList<Integer>();
bs.add(15);

List<? extends Number> b=bs;
System.out.println(b.get(0));接着我想在b中再次调用add(integer)方法,但却没有,这是怎么回事呢

解决方案 »

  1.   

    因为你用问号  你都没有确定币里面是什么东西  为什么要让你add一个integer?
      

  2.   

    ?通配符  ?extends Number
    ?可以是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short 
      

  3.   

    不知道继承自Number的是哪个,不能随便给你add个Integer,编译器都不知道给你强制转换成哪个
      

  4.   

    List<? extends Number> b定义了这个你编译很难通过,这个就是不确定的返型,你无法添加指定对象类型进去咯,如果你非要想这样,那么可以这样做,List<? super Integer> b 这样你可以随意添加Integer对象,但是如果你这样定义List<? super Number> b=new ArrayList<Integer>();就会错误,因为接受的返型类型泛化了,范围只能缩小,你可以指定一个是Number的父类的返型,可是很遗憾API中没有,故而你只能用List<? super Integer> b=new ArrayList<Integer>()。个人心得随便说说还忘高手多多指导,祝楼主好运.