【发布时间】:2023-03-29 22:24:01
【问题描述】:
我正在阅读这个答案,它消除了我的一些疑问,但我不明白这一行中的一件事:
T extends Comparable< ? super T>
回复该帖子的每个人都解释说 T 实现 Comparable<T or T's superclass>;
但是有写扩展,所以 T 是 Comparable 的子接口而不是子类,那么为什么所有回复都将实现作为动词?
我唯一的猜测是他们都暗示T是一个静态类型是Comparable子接口的对象,但动态类型实际上是Comparable的实现类,是这样吗?
【问题讨论】:
-
一个类可以扩展一个类,实现一个接口。但是在定义泛型类型边界时,我们总是使用“扩展”来表示“是这种类型还是这种类型的子类型”。因此,子接口或实现该接口的类都符合条件。请参阅docs.oracle.com/javase/tutorial/java/generics/bounded.html:请注意,在此上下文中,extends 用于一般意义上的“扩展”(如在类中)或“实现”(如在接口中)
-
我确定某处有重复(我不久前看到过类似的问题),但我找不到。
-
想一想,你会得到一个不是具体的实例化对象的
T吗?它总是一个类,无论是接口的匿名实现还是实现它的类。就简单的引用而言,没有明显的T implements XYZ,因为据我记得没有太多理由进行区分。