小编use*_*428的帖子

编译器认为可比类型不可比

所以我有一个实现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,以防它与它有任何关系.

java generics interface comparable

4
推荐指数
1
解决办法
113
查看次数

标签 统计

comparable ×1

generics ×1

interface ×1

java ×1