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

猜你喜欢

转载自www.cnblogs.com/Nelofie/p/8986618.html