所以我有一个实现Comparable的类(为了简洁我在这里有一个虚拟方法)
public class MarkovEntry<T extends Chainable> implements Comparable<MarkovEntry<T>>
{
// Compare two rows by ID
public int compareTo(MarkovEntry<T> e)
{
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
另一个类中的方法采用Comparable(再次,虚拟方法)
public class ArrayOps
{
public static int binSearch(ArrayList<Comparable> list, Comparable c)
{
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试按如下方式调用我的方法时
int index = ArrayOps.binSearch(entries, newEntry);
Run Code Online (Sandbox Code Playgroud)
其中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.
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?MarkovEntry专门实现了Comparable - 为什么编译器不能识别?
我的类Chainable也实现了Comparable,以防它与它有任何关系.