我想在Rosettacode.org上實現用java編寫的Quicksort方法。如何創建類型E Java列表擴展可比較<? super E>
http://rosettacode.org/wiki/Sorting_algorithms/Quicksort#Java
不過,我不知道怎麼要素,以使用方法添加到E型的一個LinkedList。
public static <E extends Comparable<? super E>> void main(String[] args) {
List<E> list = new LinkedList<E>();
list.add(1);
}
我收到以下錯誤,當我嘗試編譯:
QuickSort.java:12: error: no suitable method found for add(int) list.add(1);
^
method List.add(int,E) is not applicable
(actual and formal argument lists differ in length)
method List.add(E) is not applicable
(actual argument int cannot be converted to E by method invocation conversion)
method Collection.add(E) is not applicable
(actual argument int cannot be converted to E by method invocation conversion) where E is a type-variable:
E extends Comparable<? super E> declared in method <E>main(String[]) 1 error make: *** [c] Error 1
此代碼並不意味着駐留在'main'方法中。您可以在通用類型和非通用類型之間進行切換,正如您所看到的,它不起作用(編譯器如何知道'1'是否與'E'兼容?)。雖然我一點也不確定你想要達到什麼目的,但你鏈接的文章已經實現了快速排序代碼,那麼你爲什麼要重寫呢? – JonK 2014-10-02 13:13:14
@JonK我不想重寫它,我試圖實現它。 – benjovanic 2014-10-02 14:17:42
但它已經被實現 - 鏈接到**的quickSort方法是**實現。通過「實施」你的意思是「*使用*」? – JonK 2014-10-02 14:20:58