Document 和NodeList 接口調(diào)用的方法是在哪里實(shí)現(xiàn)的?
接口中是沒有方法實(shí)體的、需要實(shí)現(xiàn)類重寫,然后通過接口回調(diào)調(diào)用實(shí)現(xiàn)類重定的方法,那問題是:Document 和NodeList 都是接口,那下面程序中,接口調(diào)用的方法是在哪里實(shí)現(xiàn)的?
//創(chuàng)建 一個(gè)DocumentBuilder對(duì)象
DocumentBuilder db=dbf.newDocumentBuilder();
//通過 DocumentBuilder對(duì)象的parser方法加載books.xml文件到當(dāng)前項(xiàng)目下
Document document=db.parse("books.xml");
//獲取所有book節(jié)點(diǎn)的集合
NodeList bookList=document.getElementsByTagName("book");
//通過 nodelist的getlength()方法可以獲取booklist的長(zhǎng)度
System.out.println("一共有"+bookList.getLength()+"本書");
//遍歷每全個(gè)book節(jié)點(diǎn)
for(int i=0;i<bookList.getLength();i++){
2017-05-03
我喜歡刨根問底,雖然記住了過程,不影響這部分知識(shí)的運(yùn)用,不過不弄請(qǐng)楚,老感覺別扭。你的回答,我不是很理解,我也百度了好久,都沒有明確說明這個(gè)問題的。但我在查DOM的時(shí)候,才知道,其本身是瀏覽器內(nèi)嵌的一個(gè)標(biāo)準(zhǔn)借口,Node,NodeList,Document等都是DOM中的接口,其方法應(yīng)該是在DOM中實(shí)現(xiàn)的,而java只不過是引入了這些借口,其DocumentBuilderFactory和DocumentBuilder才是自身的,通過他們可以建立java和dom的通道,可以調(diào)用dom同名借口中的方法,其實(shí)那些方法都是DOM中的。
2017-05-02
我認(rèn)為是在getElementByTagName()相關(guān)的方法中實(shí)現(xiàn),其返回的是NoteList類型的集合,雖然NoteList是接口類型,但在調(diào)用getElementByTagName()方法時(shí)其相關(guān)的類已實(shí)現(xiàn)了NoteList接口,我們可以追蹤getElementByTagName()方法定義,就可以逐步看到到底是哪個(gè)類實(shí)現(xiàn)了NoteList接口。我感覺這也是接口、OO封裝和繼承的好處,讓我們關(guān)注目的,忽略具體基礎(chǔ)的實(shí)現(xiàn)。這我的淺見,僅供參考,請(qǐng)多指教!