[英]How to know which class implemented the interface?
(Java入門)
我有一個愚蠢的疑問。
這是代碼
XPathFactory xpathFactory = XPathFactory.newInstance();
XPathFactory是absrtact類,如何創建對象? 這里有什么聯系嗎?
XPath xpath = xpathFactory.newXPath();
XPath是一個接口,因此在調用xpathFactory.newXPath()時,它是否返回實現了XPath接口的類的對象? 這是正確的嗎 ?
我們如何知道哪個類實現了XPath接口?
誰能幫助我了解這一點?
謝謝
首先,沒關系-重要的是某個類確實起作用(它可能是匿名內部類)。 其次,可以使用getClass()
進行查找。 喜歡,
System.out.println(xpath.getClass().getCanonicalName());
它為您提供了XPathFactory
的某些實現的實例,而后者又為您提供了XPath
的一些實現的實例。
您可以通過getClass()
獲得有關實際實現的信息,但關鍵是-您不必在意。 這就是接口的用途-隱藏所使用的實際實現,只給您依賴的合同 。
XPathFactory.newInstance()
是static
方法。 它不能返回XPathFactory
基類本身的實例(因為它是抽象的),但是可以返回XPathFactory
的某些子類的實例。
如您所說, xpathFactory.newXPath()
返回實現XPath
接口的類的實例。 您不必關心實例化了哪個實際的類(這是實現細節),但是您可以通過調用xpath.getClass()
獲得該信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.