我很難理解使用泛型類型參數的最佳方法。如何在解釋的情況下在java中使用泛型類型聲明?
考慮一個優先級隊列的實現,該實現實現了一個接口並要求所有元素都可以與其類型進行比較。該類有一個帶有輸入類型集合的構造函數,它提供了初始元素。這裏有幾個選擇。你能解釋分歧嗎?並提供這種聲明的最一般方式?
public class HeapMinPQ<E extends Comparable<E>> implements MinPQ<E> {
...
public HeapMinPQ(Collection<? extends Comparable<E>> source) {
...
}
}
public class HeapMinPQ<E extends Comparable<E>> implements MinPQ<E> {
...
public HeapMinPQ(Collection<? extends E> source) {
...
}
}
public class HeapMinPQ<E extends Comparable<? super E>> implements MinPQ<E> {
...
public HeapMinPQ(Collection<? extends Comparable<E>> source) {
...
}
}
我並不冒犯。這不是一項家庭作業。我正在接受採訪。我嘗試實現基於堆的優先級隊列。 – user2259824
相關:http://stackoverflow.com/questions/2723397/what-is-pecs-producer-extends-consumer-super&爲什麼最通用的類型是'E延伸可比較的 super E>'。 – zapl