java泛型中的上下界通配符
Posted nelofie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java泛型中的上下界通配符相关的知识,希望对你有一定的参考价值。
java泛型中,通配符?表示未知类型,等同于<? extends Object>,<? extends T>是上边界限定通配符,<? super T>是下边界限定通配符。
一、区别
在一个list中,上下界通配符能够存放和读取的对象类型如下图所示:
二、原则
上下界通配符的使用应当遵循PECS原则:Producer Extends,Consumer Super。
限定通配符总是包括自己
上界类型通配符:add方法受限
下界类型通配符:get方法受限
如果你想从一个数据类型里获取数据,使用 ? extends 通配符
如果你想把对象写入一个数据结构里,使用 ? super 通配符
如果你既想存,又想取,那就别用通配符
不能同时声明泛型通配符上界和下界
参考:
Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/20400700/answer/117464182
https://blog.csdn.net/claram/article/details/51943742
以上是关于java泛型中的上下界通配符的主要内容,如果未能解决你的问题,请参考以下文章