看了其他两个类似问题的回答,觉得不满意。在导包正确的前提下,使用迭代器遍历集合元素可以如下图所示:
但是也可以如下:
Iterator<Course> it = courses.iterator(); while(it.hasNext()){ Course c = it.next(); System.out.println(c.id + ":" + c.name); }
个人一开始觉得it.next()返回的就是Course对象,也就是集合中的元素,其类型肯定是Course类型了,所以为何还要在图里面进行类型转换?
第二种是看到了其他提问里想到的,原来迭代器还可以指定类型,就像集合的泛型似的,那么接下来就不用类型转换了。也许这里缺少的是迭代器的知识。
在未类型转换时,报错是:Type mismatch: cannot convert from Object to Course。看来迭代器返回的是Object类型,就好像放入集合中的元素被转变成(是转变)Object类型一样。