[英]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)
编辑 1:添加类的屏幕截图
您的MinPriorityQueue
有一个原始超类:
... extends PriorityQueue
因此,从该类继承的方法(例如iterator()
)也将是原始的。
使超类成为非原始类:
... extends PriorityQueue<E>
很可能您的MinPriorityQueue
实现没有实现Iterable<?>
接口,只有在这种情况下,您才能像在选项 2 中尝试那样在循环中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.