(Java beginer)
我有一个愚蠢的怀疑。
这是代码
XPathFactory xpathFactory = XPathFactory.newInstance();
XPathFactory是absrtact类,如何创建对象?这里有连接吗?
XPath xpath = xpathFactory.newXPath();
XPath是一个接口,所以当调用xpathFactory.newXPath()时它是否返回已实现XPath接口的类的对象?这是对的吗?
我们如何知道哪个类实现了XPath接口?
任何人都可以帮我理解这个吗?
由于
答案 0 :(得分:0)
首先,它并不重要 - 所有重要的是某些类确实(它可能是一个匿名的内部类)。其次,您可以使用getClass()
查找。像,
System.out.println(xpath.getClass().getCanonicalName());
答案 1 :(得分:0)
它为您提供了XPathFactory
的某些实现的实例,后者又为您提供了XPath
某些实现的实例。< / p>
您可以通过getClass()
获取有关实际实施的信息,但重点是 - 您不应该关心。那是什么接口 - 隐藏所使用的实际实现,只给你依赖的合同。
答案 2 :(得分:0)
XPathFactory.newInstance()
是一种static
方法。它不能返回XPathFactory
基类本身的实例(因为它是抽象的),但是它可以返回XPathFactory
的某个子类的实例。
xpathFactory.newXPath()
返回实现XPath
接口的类的实例。您不必关心实例化哪个实际类(这是一个实现细节),但您可以通过调用xpath.getClass()
来获取该信息。