我想要一个接口(interface)A
由 T
参数化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/