返回信息流class Deque<Item> implements Iterable<Item>
{
..........
public Iterator<Item> iterator() // return an iterator over items
{
for(Node iter=firstNode; iter!=null; iter=iter.next)
{
System.out.printf("%s", iter.item);
}
}
}
以上的代码是一个队列类中有iterable接口,然后在类里面实现了itertor方法。
有几个问题:
类声明时有implement Iterable<Item>,那实现的iterator()函数 就一定要返回一个Iterable<Item>类型吗?JAVA提示说应该返回一个这个,但是我不想返回值,另外,Iterable<Item>这个类型是啥意思,能生成这个类型的对象吗?
另外,因为现在队列的元素用的是generic类型,所以在遍历的时候,用printf(%s)感觉也不太对,因为这个Item不一定就一定是字符串呀,所以大家遍历这种泛型的时候是怎么遍历的呢?
多谢!
这是一条镜像帖。来源:北邮人论坛 / java / #27169同步于 2013/10/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
Implement Iterator<Item> 的时候遇到的问题
leeshell
2013/10/11镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
实现一个接口,就必须实现这个接口里的所有方法。你实现了Iterable,就必须实现itertor方法。另外实现了itertor方法,该方法返回一个Iterator对象,Iterator是一个接口,你得在itertor方法里写一个内部类实现Itertor接口,然后返回这个类的一个对象。
你不返回值,那还怎么迭代。怎么判断迭代结束,获取下一个。
所以你还需要另外一个类实现迭代器Iterator,然后在你上面的iterator方法中返回这个具体的实现。