繁体   English   中英

Java泛型:使用迭代器时不兼容的类型

[英]Java Generics: Incompatible types when using an iterator

我正在为我的通用 MinPriorityQueue 实现编写一个测试类。

我尝试以两种方式遍历队列(即选项 1 和 2)。 选项 1 有效。 选项 2 引发错误。

选项 1

Iterator<Integer> it = q.iterator();
while(it.hasNext())
      System.out.print(it.next() + " ");

选项2

for(Integer i : q)
      System.out.print(i + " ");

问题:为什么选项 2 给我以下错误(以及如何修复它)?

main.java:17: 错误:类型不兼容:对象无法转换为整数 for(Integer i : q)

类主屏幕截图

MinPriorityQueue 类的屏幕截图

抽象类 PriorityQueue 的截图

编辑 1:添加类的屏幕截图

您的MinPriorityQueue有一个原始超类:

... extends PriorityQueue

因此,从该类继承的方法(例如iterator() )也将是原始的。

使超类成为非原始类:

... extends PriorityQueue<E>

很可能您的MinPriorityQueue实现没有实现Iterable<?>接口,只有在这种情况下,您才能像在选项 2 中尝试那样在循环中使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM