[英]Java interface extends Comparable
我希望有一個由T
A<T>
參數化的接口A
,並且還希望實現它的每個類也實現Comparable
(使用T
及其子類型)。 編寫interface A<T> extends Comparable<? extends T>
似乎很自然interface A<T> extends Comparable<? extends T>
interface A<T> extends Comparable<? extends T>
,但這不起作用。 那我該怎么辦?
當Comparable<? extends T>
Comparable<? extends T>
似乎意味着你有一個Comparable
實例可以與T
一個(未知)子類型進行比較,而不是它可以與T的任何子類型進行比較。
但是你不需要它,因為Comparable<T>
可以將自己與T
任何子類型進行比較,例如, Comparable<Number>
可以將自身與Comparable<Double>
進行Comparable<Double>
。
所以嘗試:
interface A<T> extends Comparable<T> {
// ...
}
要么
interface A<T extends Comparable<T>> extends Comparable<A<T>> {
// ...
}
取決於您是否需要能夠比較T
實例以實現compareTo
方法。
如果使用可比較的,則不需要在比較函數中指定子類型的可能性,本質上可以將對象X的任何子類型傳遞到聲明類X的參數的方法中。請參閱下面的代碼了解更多信息信息。
public interface Test<T> extends Comparable<T> {
}
class TestImpl implements Test<Number> {
@Override
public int compareTo(final Number other) {
return other.intValue() - 128;
}
}
class TestMain {
public static void main(final String[] args) {
TestImpl testImpl = new TestImpl();
testImpl.compareTo(Integer.MIN_VALUE);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.