为什么这给了我一个界限错误?

时间:2012-11-25 23:33:45

标签: java

我有一个自定义的“堆”类:

public class Heap<T extends Comparable<T>>
{
    ArrayList<T> heapList;


    public Heap()
    {
        heapList = new ArrayList<T>();

    }

和自定义“Process”类:

public class Process {
    private int processID, timeUnitsRequired, priority, timeOfArrival;

    public Process(int processID, int timeUnitsRequired, int priority, int timeOfArrival) {
        this.processID = processID;
        this.timeUnitsRequired = timeUnitsRequired;
        this.priority = priority;
        this.timeOfArrival = timeOfArrival;
    }

但是,如果我尝试创建一个新的进程堆,例如Heap<Process> processHeap = new Heap<Process>();,我会收到以下错误:

  

绑定不匹配:类型Process不是有界参数&gt;的有效替代; Heap的类型

这是为什么?我似乎无法弄明白。

2 个答案:

答案 0 :(得分:2)

流程没有实现Comparable

答案 1 :(得分:1)

流程对象需要实现Comparable接口。

按优先级比较的示例实施

public class Process implements Comparable<Process>{

    @Override
    public int compareTo(Object o) {
        Process p2 = (Process) o;
        if(this.priority > p2.priority){
          return 1;
        }else if(this.priority < p2.priority){
          return -1;
        }
        return 0;
    }
}

Comparable API Documentation

相关问题