oce*_*ola 16 java generics inheritance interface
我希望有一个A参数化的接口T A<T>,并且也希望每个实现它的类也实现Comparable(使用T及其子类型).写作似乎很自然interface A<T> extends Comparable<? extends T>,但这不起作用.那我该怎么办?
fin*_*nnw 20
当Comparable<? extends T>出现时,它意味着你有一个实例Comparable可以与一个(未知)子类型T进行比较,而不是它可以与T的任何子类型进行比较.
但你不需要那样,因为a Comparable<T>可以将自己与任何类型的任何子类型进行比较T,例如a Comparable<Number>可以将自己与a进行比较Comparable<Double>.
所以尝试:
interface A<T> extends Comparable<T> {
// ...
}
Run Code Online (Sandbox Code Playgroud)
要么
interface A<T extends Comparable<T>> extends Comparable<A<T>> {
// ...
}
Run Code Online (Sandbox Code Playgroud)
取决于您是否需要能够比较实例T以实现您的compareTo方法.