Java泛型中的“超级”和“扩展”有什么区别

2022-08-31 11:33:29

我正在尝试学习Java泛型。我不清楚你什么时候会使用,什么时候会使用。这些事情中的每一件对T意味着什么?假设我有和,这些是什么意思?<T extends Foo><T super Foo><T extends Comparable><T super Comparable>

我已经在 sun.com 上阅读了几个教程,但我仍然迷路了。有人可以用例子来说明吗?


答案 1

这取决于它允许的继承层次结构的方式。假设您有一个类“子级”,它继承自“父级”,继承自“祖父母”。

<T extends Parent>接受父项或子项,同时接受父项或父项。<T super Parent>


答案 2

有三种类型的通配符:

  • ? extends Type:表示类型的子类型家族。这是最有用的通配符。Type
  • ? super Type:表示类型的超类型家族。Type
  • ?:表示所有类型或任何类型的集合。

推荐