问答详情
源自:4-9 学生选课---应用泛型管理课程 Ⅰ

使用泛型后,用迭代器遍历集合元素的问题

看了其他两个类似问题的回答,觉得不满意。在导包正确的前提下,使用迭代器遍历集合元素可以如下图所示:http://img2.mukewang.com/5a080f740001169307740384.jpg

但是也可以如下:

Iterator<Course> it = courses.iterator();
    while(it.hasNext()){
	Course c = it.next();
	System.out.println(c.id + ":" + c.name);
    }

个人一开始觉得it.next()返回的就是Course对象,也就是集合中的元素,其类型肯定是Course类型了,所以为何还要在图里面进行类型转换?

第二种是看到了其他提问里想到的,原来迭代器还可以指定类型,就像集合的泛型似的,那么接下来就不用类型转换了。也许这里缺少的是迭代器的知识。

提问者:Sean_Chou 2017-11-12 17:27

个回答

  • Sean_Chou
    2017-11-12 17:42:23

    http://img1.mukewang.com/5a0815470001a1c406300218.jpg

    在未类型转换时,报错是:Type mismatch: cannot convert from Object to Course。看来迭代器返回的是Object类型,就好像放入集合中的元素被转变成(是转变)Object类型一样。