JOKER1072752180 2017-08-15 02:10 采纳率: 0%
浏览 1420

java容器中ArrayList通过内部类实现Iterator接口时,内部类Itr的写法不太懂?

图片说明
通过jdk的源码可知在java容器中都是通过内部类的方式来实现Iterator接口或者ListIterator接口,上图中通过内部类的方式实现Iterator接口的形式,好像不太符合泛型接口的实现方式,求大神告知详情?
个人的几个想法:
1.不声明为Itr,ArrayList类也是实现Iterator接口,需要重写iterator(),在重写的方法中是new Itr()对象,如果声明为泛型,此时就需要对应的实际参数(不能传递new Itr()进去)。
2.如果Itr是非泛型类,那么内部的方法就应该声明为泛型方法,但是内部也没有声明?
请问有了解的大神,给一个合理的解释~~~~

  • 写回答

1条回答 默认 最新

  • Vane11 2017-08-15 03:40
    关注

    题主可以再描述的准确点,有些语句不容易理解
    例如没懂“在重写的方法中是new Itr()对象”是什么意思。

    先讲能理解的问题,我理解其实这个问题就是泛型。题主在纠结 源码里的这段
    public Iterator iterator() {
    return new Itr();
    }
    为什么new Itr(),没有传泛型?因为实现的接口已经指定了泛型了,这个泛型就是new ArrayList() 里的E,源码很明确
    还有题主说的“不太符合泛型接口的实现方式”,我不是很能理解。接口和泛型互不干扰,也没有什么特殊的实现方式
    再讲接口实现方式,先明确一点,功能实现有很多种方式,方式的不同取决于设计的不同(不讨论好和坏),每个功能的实现都可以多样化。
    接口是功能的定义,每个接口都是一类功能划分。List和Iterator定义和功能都是不同的,实际也是定义了两个不同的接口,从这个角度来讲,List的实现类是不需要实现Iterator接口的,这是一个耦合的概念。
    有说的不当的地方,望大家指正

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题