java 泛型中子类型的疑惑?

初学 java,在文档里面看到一篇有关泛型的文章,文章链接为:https://docs.oracle.com/javas...

其中最后一张图里面,为什么 List<Number> 可以是 List<? extends Number> 的子类型?个人理解 <? extends Number> 表示了该类型是 Number 的一个子类型,那么箭头应该反着画才对?

个人初学 java,还有很多不理解,望能有前辈指点,不胜感激

阅读 2.8k
3 个回答

这个图你可以理解几种List的类型的分层关系。把List<? extends Number>List<Number>当做一个整体来理解就好,就像前面的那位说的。如果还是不理解可以实操一下。
图一这样赋值是没有问题的,但是图二反过来就会有问题。

clipboard.png

clipboard.png

另外泛型学习推荐一篇很好的文章:https://blog.csdn.net/briblue...

你看错了,图上没说 List<Number> 可以是 List<? extends Number> 的子类型,图上说List<Number> 可以是 List<? super Number> 的子类型,super而不是extends,List<? super Number>的元素是Number的父类。

新手上路,请多包涵

List<? extends Number> 容器能容纳List<Number>, 这么理解就好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题