Java 接口(interface)扩展 Comparable

标签 java generics inheritance interface

我想要一个接口(interface)AT 参数化A<T> ,并且还希望实现它的每个类也实现 Comparable (带有 T 及其子类型)。写成 interface A<T> extends Comparable<? extends T> 似乎很自然,但这不起作用。那我该怎么办呢?

最佳答案

Comparable<? extends T>出现这意味着你有一个 Comparable 的实例可以与 T 的一个(未知)子类型进行比较,并不是说它可以与 T 的任何子类型相比较。

但你不需要那个,因为 Comparable<T>可以将自己与 T 的任何子类型进行比较无论如何,例如一个Comparable<Number>可以将自己与 Comparable<Double> 进行比较.

所以尝试:

interface A<T> extends Comparable<T> {
    // ...
}

interface A<T extends Comparable<T>> extends Comparable<A<T>> {
    // ...
}

取决于您是否需要能够比较 T 的实例为了实现您的 compareTo方法。

关于Java 接口(interface)扩展 Comparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231804/

相关文章:

generics - Dart-具有泛型的类可以扩展具有第二泛型的第二类-这可能吗?

java - 泛型方法继承

c++ - 使用 protected 和继承时无法访问在类中声明的私有(private)成员

java - 什么样的List<?>会自动剔除重复项

java - 我需要一个比最大堆空间更大的数组

java - 在 Eclipse RCP 应用程序 (Eclipse e4) 中隐藏 Coolbar/Toolbar items/Preference pages

java - JLabel可以替代Jpanel作为容器吗?

java - 如何使用泛型创建链表

java - JAXB 编码子类继承

oop - 如何在dart中实现继承?