如何知道哪个类实现了接口?

时间:2018-03-12 12:37:06

标签: java interface

(Java beginer)

我有一个愚蠢的怀疑。

这是代码

XPathFactory xpathFactory = XPathFactory.newInstance(); 

XPathFactory是absrtact类,如何创建对象?这里有连接吗?

XPath xpath = xpathFactory.newXPath();

XPath是一个接口,所以当调用xpathFactory.newXPath()时它是否返回已实现XPath接口的类的对象?这是对的吗?

我们如何知道哪个类实现了XPath接口?

任何人都可以帮我理解这个吗?

由于

3 个答案:

答案 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()来获取该信息。