作者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
1F:推 superlubu:因为 implement Comparable 的是 A 不是 C 11/12 12:09
2F:推 PsMonkey:他倒数第三行有针对这个乱试... 虽然我有点不确定意思 11/12 12:13