Java中PriorityQueue非泛型报错及类型不匹配问题求助
解决PriorityQueue泛型错误及类型不匹配问题
问题根源
- 类名冲突:你的自定义类命名为
PriorityQueue,与Java标准库java.util.PriorityQueue重名,编译器会优先使用你自定义的类,而这个自定义类并非泛型类,因此无法使用<Double>进行参数化,触发第一个错误。 - 变量名不一致:代码中定义的变量是
queuePriority,但后续调用方法时使用的是queue,这会导致"找不到符号"的编译错误。 - 类型不匹配根源:当你移除泛型参数后,实例化的是自定义的
PriorityQueue,它并未实现Queue<Double>接口,因此无法完成类型转换,触发第二个错误。
解决方案
方案一:修改自定义类名(推荐)
将你的类名改为不与标准库类重名的名称,比如PriorityQueueDemo,同时修正变量名不一致的问题:
import java.util.*; public class PriorityQueueDemo { public static void main(String[] args) { Queue<Double> queuePriority = new PriorityQueue<>(); queuePriority.offer(3.0); queuePriority.offer(3.5); queuePriority.offer(2.5); queuePriority.offer(4.0); queuePriority.offer(1.5); while (!queuePriority.isEmpty()) { System.out.println(queuePriority.poll()); } } }
方案二:使用全限定类名引用标准库PriorityQueue
如果不想修改类名,在实例化时明确指定java.util.PriorityQueue的全限定名称,同时修正变量名:
import java.util.*; public class PriorityQueue { public static void main(String[] args) { Queue<Double> queuePriority = new java.util.PriorityQueue<>(); queuePriority.offer(3.0); queuePriority.offer(3.5); queuePriority.offer(2.5); queuePriority.offer(4.0); queuePriority.offer(1.5); while (!queuePriority.isEmpty()) { System.out.println(queuePriority.poll()); } } }
内容的提问来源于stack exchange,提问作者Hildingr
相关产品推荐
相关产品推荐

