簡體   English   中英

Java接口擴展了Comparable

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM