当前位置: 代码迷 >> Java Web开发 >> 请问:java API接口 是怎么被调用的
  详细解决方案

请问:java API接口 是怎么被调用的

热度:10294   发布时间:2013-02-25 21:14:10.0
请教:java API接口 是如何被调用的?
Java code
public static void main(String[] args) throws Exception {        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();        DocumentBuilder db=factory.newDocumentBuilder();        Document document=db.parse("city.xml");                NodeList list=document.getElementsByTagName("地区");  //1            Node node=list.item(0);                               //2         System.out.println(node.getTextContent());    }


问题1:代码中的NodeList 和 Node 是个接口,接口中不是只有方法体不能有实现的嘛?java中怎么就可以使用呢? 
  比如NodeList 如果说返回的对象是NodeList的类型,那肯定也是NodeList的子类或者new过NodeList返回的吧,但是
  API中NodeList没有子类而且是个接口也不能被new啊。。。底层封装?java中到底是什么原理??

请高手给讲解一下调用原理...先谢了。

------解决方案--------------------------------------------------------
NodeList list=document.getElementsByTagName("地区");

这个返回的是一个实现了NodeList接口的类。NodeListImpl..之类的东西。不是NodeList的子类。是实现类

------解决方案--------------------------------------------------------
相当于
List<String> tmp = new ArrayList<String>();
------解决方案--------------------------------------------------------
这是java中的多态,NodeList是一个接口没错,但是document.getElementsByTagName("地区"); 返回的确实实现了NodeList接口的一个具体实现类,所以我们可以把这个返回值看做是NodeList来操作。
举个例子:
苹果,我可以看做是个接口。而红苹果我们可以看做是苹果的具体类。那我们可以说红苹果是苹果。就正如
Map<String, String> map = new HashMap<String, String>();
map = new TreeMap<String, String>();一样
  相关解决方案