黑马程序员技术交流社区

标题: 泛型中 向上限型 [打印本页]

作者: fufeng    时间: 2014-6-6 13:54
标题: 泛型中 向上限型
Collection<? extends Object>collection6 =
   new ArrayList<String>();
  collection.add("aaa");
上面编译正确

下面编译失败
Collection<? extends Integer>collection7 =
   new ArrayList<Integer>();
  Integer i = new Integer(122);
  collection7.add(i);

这是为什么呢? 感觉这两段代码,其实其实每什么区别,怎么实现起来区别这么大?

作者: 谭荣强    时间: 2014-6-8 05:57
谁说上面的可以编译通过。上面的也错!
再说你的代码是不是复制多了,collection.add("aaa"),哪有collection这个变量,明明是collection6嘛!
两个全错,左右泛型不一致,错!但是左边不写,只是告警(新版本兼顾老版本)

作者: crazystraw    时间: 2014-6-8 09:10
表示没看懂
作者: 18353666072    时间: 2014-6-8 12:50
还没看到那,先瞅瞅{:3_62:}
作者: 倪大大    时间: 2014-6-8 13:40
谭荣强 发表于 2014-6-8 05:57
谁说上面的可以编译通过。上面的也错!
再说你的代码是不是复制多了,collection.add("aaa"),哪有collecti ...

上面个 左边是向上限定,Object的子类都行, 右边是String 为什么错?
作者: wangkerui    时间: 2014-6-8 13:46
这代码写的,看的是懂非懂啊!
作者: 谭荣强    时间: 2014-6-8 20:26
倪大大 发表于 2014-6-8 13:40
上面个 左边是向上限定,Object的子类都行, 右边是String 为什么错?

左边的容器容器可以接收Object.而在右边你又将容器限定在Strting.
那么左边本来还可以装别的,例如Integer,一限定就不能装了。
理解有点困难。
总之一句话:左移保持一致




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2