Java 找不到符号/无法使用泛型中的ArrayList将对象转换为可比较对象

Java 找不到符号/无法使用泛型中的ArrayList将对象转换为可比较对象,java,generics,arraylist,heap,priority-queue,Java,Generics,Arraylist,Heap,Priority Queue,在这个程序中,我使用Java中的ArrayList创建了一个堆优先级队列。 我将尽量保留代码,以帮助更轻松地解决问题 本质上,我已经为heapAPI定义了一个接口,并在Heap类中实现了它。堆构造函数应该通过定义对象的arraylist来构造堆对象。这里,我想传递PCB类的对象(要进入优先级队列的作业)。但是,当我传递这些对象时,我无法通过arraylist访问它们 下面是HEAPPI、Heap类和PCB类的代码 HeapAPI.java public interface HeapAPI<

在这个程序中,我使用Java中的ArrayList创建了一个堆优先级队列。 我将尽量保留代码,以帮助更轻松地解决问题

本质上,我已经为heapAPI定义了一个接口,并在Heap类中实现了它。堆构造函数应该通过定义对象的arraylist来构造堆对象。这里,我想传递PCB类的对象(要进入优先级队列的作业)。但是,当我传递这些对象时,我无法通过arraylist访问它们

下面是HEAPPI、Heap类和PCB类的代码

HeapAPI.java

public interface HeapAPI<E extends Comparable<E>>
{
     boolean isEmpty();
     void insert(E item);
     E remove() throws HeapException;
     E peek() throws HeapException;
     int size();
}
我得到的错误是程序找不到符号:method getPriority()

[此外,在每个文件中调用import java.util.ArrayList;]

我一直在尝试学习和应用泛型,但现在我被卡住了

如果我什么都不清楚,我可以轻松地添加更多代码或澄清问题

感谢您的帮助


谢谢

将堆声明更改为

Heap<PCB> temp = new Heap<>();
Heap temp=new Heap();

现在,您的编译器知道堆包含PCB对象,它期望返回的其他对象没有getPriority()方法。

将堆声明更改为

Heap<PCB> temp = new Heap<>();
Heap temp=new Heap();
现在,您的编译器知道堆中包含PCB对象,而它期望返回的其他对象没有getPriority()方法。

问题在于:

Heap temp = new Heap();
您有一个泛型
类,但在这里创建它时没有泛型。这是一个例子

比如:

Heap<PCB> temp = new Heap<>();
Heap temp=new Heap();
应该有用。

问题是:

Heap temp = new Heap();
您有一个泛型
类,但在这里创建它时没有泛型。这是一个例子

比如:

Heap<PCB> temp = new Heap<>();
Heap temp=new Heap();

应该有用。

工作完美无瑕。也完全有道理。谢谢你指出这一点。工作完美无瑕。也完全有道理。谢谢你指出这一点。再一次,工作完美无瑕。也完全有道理。也感谢您指出这一点…@boppa注意,您将收到警告:命令行上的javac或您的IDE。注意你的编译器,它会帮助你的!再一次,它完美地工作了。也完全有道理。也感谢您指出这一点…@boppa注意,您将收到警告:命令行上的javac或您的IDE。注意你的编译器,它会帮助你的!请注意,除非PCB被认为具有“自然”顺序(如果PCB是“印刷电路板”的意思,我认为它们不会)。相反,
PCB
不应该实现
compariable
,并且
HeapAPI
不需要限制为
compariable
类型;但是,您可以向
HeapAPI
的实现者的构造函数提供一个
比较器
,从而允许它对元素进行排序。请注意,除非PCB被认为具有“自然”顺序(如果PCB是“印刷电路板”的意思,我认为它们不会)。相反,
PCB
不应该实现
compariable
,并且
HeapAPI
不需要限制为
compariable
类型;但是,您可以向
HeapAPI
的实现者的构造函数提供一个
比较器
,从而允许它对元素进行排序。