不太理解 Iterator it=coursesToSelect.iterator() 的意思
1.是使用了iterator()方法同時創(chuàng)建了一個“it”對象嗎?接口不是要通過“接口類 對象名 = new 接口實現(xiàn)類”來創(chuàng)建對象,再使用對象名來使用方法的嗎?如果不是。沒有創(chuàng)建對象,那如何通過“it”使用hasNext()方法,也就是it.hasNext()。
2.看了一下其他人的評論。有的說是:“通過coursesToSelect調(diào)用iterator()方法返回一個構(gòu)造器給it”。 然后我的疑問是:構(gòu)造機是“初始化塊”嗎?還是說構(gòu)造器就是構(gòu)造方法?通過過一個方法返回一個構(gòu)造方法或初始化塊,我在網(wǎng)上沒查到相關(guān)資料。 如果說構(gòu)造器是初始化塊,而在后面的代碼又通過“it”使用到了hasNext()也就是it.hasNext()。那是不是說“初始化塊”內(nèi)可以寫入方法,相對于不用創(chuàng)建對象而使用方法的內(nèi)部類?
2022-05-15
courseToSelect 是List接口的屬性,因為Lis接口繼承了Collection接口,Collection接口里有個iterator方法,作用是返回Iterator迭代器的對象,所以可以用Iterator類接收,it就是迭代器的對象名。我也是剛學(xué)兩三天,不知道理解的到不到位,希望有大佬可以指教
搜索
復(fù)制
2020-07-08
樓上對問題一的解答還是不夠全面,按照你所說“開頭的“Iterator”聲明了對象類型為Iterator。但是這不是說把Iterator實例化(實例化就是創(chuàng)建對象)。只是規(guī)定了對象的類型?!蹦俏蚁胝垎?,這個對象“it”從何而來?
2020-04-27
問題一:
接口不可以通過“接口類 對象名 = new 接口實現(xiàn)類”來創(chuàng)建對象,再使用對象名來使用方法。
接口是要被實現(xiàn)的,它是抽象類,不可以被實例化(創(chuàng)建對象)。
有代碼“Iterator it = coursesToSelect.irerator()”。開頭的“Iterator”聲明了對象類型為Iterator。但是這不是說把Iterator實例化(實例化就是創(chuàng)建對象)。只是規(guī)定了對象的類型。你應(yīng)該把它理解為調(diào)用了一個返回值為對象的方法,把他傳給“it”這個對象名,并且聲明對象為Iterator類型。
PS:?iterator()方法是java.lang.Iterable接口,被Collection繼承。所以Collection里面有iterator這個方法,隱藏ArrayList里面也就有這份方法。所以就可以用ArrayList的對象名“coursesToSelect”來調(diào)用這個方法。
問題二:
????構(gòu)造器是初始化塊也是構(gòu)造方法,是同一個東西的不同名稱,只會執(zhí)行一次,在創(chuàng)建對象的時候執(zhí)行。“返回一個構(gòu)造方法”我沒聽過這種說法,方法只能返回各種數(shù)據(jù)類型和對象。
????構(gòu)造器本身就是方法塊,他能調(diào)用方法。構(gòu)造器只能在初始化的時候執(zhí)行一次,有時候你沒有寫,那就好自動給你一個默認的,所有實例化的對象都有構(gòu)造器。
????你問構(gòu)造器可不可以寫入方法。方法是可以被調(diào)用的,構(gòu)造器無法調(diào)用。但是它可也能執(zhí)行方法的功能,比如說賦值。你可以把方法的功能寫在構(gòu)造器里面,這些功能在初始化的時候自動執(zhí)行。