SUPER 和 EXTENDS关键字使用

103 阅读1分钟

JAVA领域

<? super Human> 下界通配符
<? extends Human> 上界通配符
所以两者限定的范围都是Human的子类,super只供插入和删除,extends只供读写。详见下边示例。

什么场景使用?(区别)

例如:
List<? extends Human> 只能使用get方法,不能使用add方法,编译过不去
List<? super Human>只能使用add方法,get方法只能付给Object对象
举例:
官方的标准用法,java.util.collection中的copy方法

如何代码实现?

参考上述示例

与T和?的区别

T代表同一种类型
?代表所有类型