【发布时间】:2014-05-02 02:31:41
【问题描述】:
所以我有一个实现 Comparable 的类(为简洁起见,我在这里有一个虚拟方法)
public class MarkovEntry<T extends Chainable> implements Comparable<MarkovEntry<T>>
{
// Compare two rows by ID
public int compareTo(MarkovEntry<T> e)
{
return 0;
}
}
另一个类中的方法采用 Comparable(再次,虚拟方法)
public class ArrayOps
{
public static int binSearch(ArrayList<Comparable> list, Comparable c)
{
return 0;
}
}
当我尝试如下调用我的方法时
int index = ArrayOps.binSearch(entries, newEntry);
其中 entries 是 MarkovEntry 的 ArrayList,newEntry 是 MarkovEntry,编译器告诉我
actual argument java.util.ArrayList<com.company.MarkovEntry<T>> cannot be converted
to java.util.ArrayList<java.lang.Comparable> by method invocation.
这里发生了什么? MarkovEntry 专门实现了 Comparable——为什么编译器不能识别?
我的类 Chainable 也实现了 Comparable,以防万一与它有关。
【问题讨论】:
标签: java generics interface comparable