Java 找不到符号/无法使用泛型中的ArrayList将对象转换为可比较对象
在这个程序中,我使用Java中的ArrayList创建了一个堆优先级队列。 我将尽量保留代码,以帮助更轻松地解决问题 本质上,我已经为heapAPI定义了一个接口,并在Heap类中实现了它。堆构造函数应该通过定义对象的arraylist来构造堆对象。这里,我想传递PCB类的对象(要进入优先级队列的作业)。但是,当我传递这些对象时,我无法通过arraylist访问它们 下面是HEAPPI、Heap类和PCB类的代码 HeapAPI.javaJava 找不到符号/无法使用泛型中的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<
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
的实现者的构造函数提供一个比较器
,从而允许它对元素进行排序。