为了账号安全,请及时绑定邮箱和手机立即绑定

不太理解 Iterator it=coursesToSelect.iterator() 的意思

http://img1.sycdn.imooc.com//5ea3bbe50001814607150183.jpg1.是使用了iterator()方法同时创建了一个“it”对象吗?接口不是要通过“接口类 对象名 = new 接口实现类”来创建对象,再使用对象名来使用方法的吗?如果不是。没有创建对象,那如何通过“it”使用hasNext()方法,也就是it.hasNext()。

2.看了一下其他人的评论。有的说是:“通过coursesToSelect调用iterator()方法返回一个构造器给it”。 然后我的疑问是:构造机是“初始化块”吗?还是说构造器就是构造方法?通过过一个方法返回一个构造方法或初始化块,我在网上没查到相关资料。 如果说构造器是初始化块,而在后面的代码又通过“it”使用到了hasNext()也就是it.hasNext()。那是不是说“初始化块”内可以写入方法,相对于不用创建对象而使用方法的内部类?

正在回答

3 回答

courseToSelect 是List接口的属性,因为Lis接口继承了Collection接口,Collection接口里有个iterator方法,作用是返回Iterator迭代器的对象,所以可以用Iterator类接收,it就是迭代器的对象名。我也是刚学两三天,不知道理解的到不到位,希望有大佬可以指教

搜索

复制

0 回复 有任何疑惑可以回复我~
#1

weixin_慕九州8061769

Collection接口里有个iterator方法,作用是返回Iterator迭代器的对象。courseToSelect 是List接口的属性,因为List接口继承了Collection接口,所以可以用List的属性courseToSelect去调用iterator方法,用Iterator类接收,it就是迭代器的对象名。我也是刚学两三天,不知道理解的到不到位,希望有大佬可以指教
2022-05-15 回复 有任何疑惑可以回复我~

楼上对问题一的解答还是不够全面,按照你所说“开头的“Iterator”声明了对象类型为Iterator。但是这不是说把Iterator实例化(实例化就是创建对象)。只是规定了对象的类型。”那我想请问,这个对象“it”从何而来?

0 回复 有任何疑惑可以回复我~

问题一:

接口不可以通过“接口类 对象名 = new 接口实现类”来创建对象,再使用对象名来使用方法。

接口是要被实现的,它是抽象类,不可以被实例化(创建对象)。

有代码“Iterator it = coursesToSelect.irerator()”。开头的“Iterator”声明了对象类型为Iterator。但是这不是说把Iterator实例化(实例化就是创建对象)。只是规定了对象的类型。你应该把它理解为调用了一个返回值为对象的方法,把他传给“it”这个对象名,并且声明对象为Iterator类型。

PS: iterator()方法是java.lang.Iterable接口,被Collection继承。所以Collection里面有iterator这个方法,隐藏ArrayList里面也就有这份方法。所以就可以用ArrayList的对象名“coursesToSelect”来调用这个方法。

问题二:

    构造器是初始化块也是构造方法,是同一个东西的不同名称,只会执行一次,在创建对象的时候执行。“返回一个构造方法”我没听过这种说法,方法只能返回各种数据类型和对象。

    构造器本身就是方法块,他能调用方法。构造器只能在初始化的时候执行一次,有时候你没有写,那就好自动给你一个默认的,所有实例化的对象都有构造器。

    你问构造器可不可以写入方法。方法是可以被调用的,构造器无法调用。但是它可也能执行方法的功能,比如说赋值。你可以把方法的功能写在构造器里面,这些功能在初始化的时候自动执行。



1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

不太理解 Iterator it=coursesToSelect.iterator() 的意思

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信