[問題] Collections.sort一個interface List

看板java作者 (仙道)時間13年前 (2012/11/12 11:36), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/2 (看更多)
是這樣的,我有兩個 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

11/12 12:09, , 1F
因為 implement Comparable 的是 A 不是 C
11/12 12:09, 1F

11/12 12:13, , 2F
他倒數第三行有針對這個亂試... 雖然我有點不確定意思
11/12 12:13, 2F
文章代碼(AID): #1Ge6wfTs (java)
文章代碼(AID): #1Ge6wfTs (java)