作者shedoh (仙道)
看板java
標題[問題] Collections.sort一個interface List
時間Mon Nov 12 11:36:05 2012
是這樣的,我有兩個 class A,B 及一個 generic type interface C
Class A implements Comparable<A> {}
interface C<T> {}
Class B extends A implements C<A> {} //B 已非 generic type,我不知這有沒有關係
之後我弄出個 B List
List<B> list = new ArrayList<B>();
然後透過 Collections.sort(list);
這樣是 OK 的,因為 B 是 A 的子類別,也繼承了 compareTo() 方法。
但我現在想說是否可以直接對 C List 來 sort,這樣比較 generic,比如說
List<C<A>> list = new ArrayList<C<A>>();
Collections.sort(list);
這時會出現 error 如下
Bound mismatch: The generic method sort(List<T>) of type Collections is not
applicable for the arguments (List<C<A>>). The inferred type C<A> is not a
valid substitute for the bounded parameter <T extends Comparable<? super T>>
網路上找不太到相關資料,大部分的Collections中不會再有generic interface
我自己是亂試過把 C 改成 => interface C<T> extends Comparable<T>{}
確保所有實作 C 的 class 都一定會 extends Comparable,但還是一樣問題。
所以來版上求助了...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.91.40
推 superlubu:因為 implement Comparable 的是 A 不是 C 11/12 12:09
推 PsMonkey:他倒數第三行有針對這個亂試... 雖然我有點不確定意思 11/12 12:13