问答详情
源自:2-3 使用 DOM 解析XML 文件的节点名和节点值

Document 和NodeList 接口调用的方法是在哪里实现的?

接口中是没有方法实体的、需要实现类重写,然后通过接口回调调用实现类重定的方法,那问题是:Document 和NodeList 都是接口,那下面程序中,接口调用的方法是在哪里实现的?

//创建 一个DocumentBuilder对象

DocumentBuilder db=dbf.newDocumentBuilder();

//通过 DocumentBuilder对象的parser方法加载books.xml文件到当前项目下

Document document=db.parse("books.xml");

//获取所有book节点的集合

NodeList bookList=document.getElementsByTagName("book");

//通过 nodelist的getlength()方法可以获取booklist的长度

System.out.println("一共有"+bookList.getLength()+"本书");

//遍历每全个book节点

for(int i=0;i<bookList.getLength();i++){


提问者:慕粉4014187从头再来 2017-05-01 18:27

个回答

  • 慕粉4014187从头再来
    2017-05-03 23:31:22

    我喜欢刨根问底,虽然记住了过程,不影响这部分知识的运用,不过不弄请楚,老感觉别扭。你的回答,我不是很理解,我也百度了好久,都没有明确说明这个问题的。但我在查DOM的时候,才知道,其本身是浏览器内嵌的一个标准借口,Node,NodeList,Document等都是DOM中的接口,其方法应该是在DOM中实现的,而java只不过是引入了这些借口,其DocumentBuilderFactory和DocumentBuilder才是自身的,通过他们可以建立java和dom的通道,可以调用dom同名借口中的方法,其实那些方法都是DOM中的。

  • 慕粉1956191199
    2017-05-02 11:29:47

    我认为是在getElementByTagName()相关的方法中实现,其返回的是NoteList类型的集合,虽然NoteList是接口类型,但在调用getElementByTagName()方法时其相关的类已实现了NoteList接口,我们可以追踪getElementByTagName()方法定义,就可以逐步看到到底是哪个类实现了NoteList接口。我感觉这也是接口、OO封装和继承的好处,让我们关注目的,忽略具体基础的实现。这我的浅见,仅供参考,请多指教!