泛型问题

fskjb01 2009-11-27 11:32:19
方法中有一项的代码:


List<Integer> bs=new ArrayList<Integer>();
bs.add(15);

List<? extends Number> b=bs;
System.out.println(b.get(0));

接着我想在b中再次调用add(integer)方法,但却没有,这是怎么回事呢
...全文
113 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tg008007x3 2009-11-28
  • 打赏
  • 举报
回复
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>()。个人心得随便说说还忘高手多多指导,祝楼主好运.
coolbamboo2008 2009-11-28
  • 打赏
  • 举报
回复
不知道继承自Number的是哪个,不能随便给你add个Integer,编译器都不知道给你强制转换成哪个
whut0802 2009-11-28
  • 打赏
  • 举报
回复
?通配符 ?extends Number
?可以是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short
一头头 2009-11-27
  • 打赏
  • 举报
回复
因为你用问号 你都没有确定币里面是什么东西 为什么要让你add一个integer?

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧