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泛型中的上下界通配符的主要内容,如果未能解决你的问题,请参考以下文章

Java泛型中extends和super的区别

java8泛型

java泛型中extends 和 super的区别

Java泛型和内部类

Java泛型中的通配符

Java泛型中T和问号(通配符)的区别