抽象类“ DocumentBuilderFactory”如何允许实例化新实例

最近,我一直在使用XML解析器。这对我来说仅仅是个开始,我设法了解了如何在Java即使用DOM解析器类,DocumentBuilderFactory以及DocumentBuilder如何解析XML文档。

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  

DocumentBuilder db = dbf.newDocumentBuilder();

我想问自己的是如何允许抽象类(例如DocumentBuilderFactory和)DocumentBuilder实例化新实例?然后在另一个示例中,我看到:

Calendar calendar = Calendar.getInstance();  

System.out.println(calendar.get(Calendar.DATE));

  1. 据我所知,您不能为抽象类和接口类实例化(换句话说,创建一个对象)。我对么?
  2. 难道getInstance()newInstancce()方法创建上面的抽象类的实例?

我是否缺少使用抽象类及其新对象的内容?

回答:

该方法是一个 抽象工厂方法

,它返回一个 子类DocumentBuilder,它是一种(混凝土)执行。

知道对象的确切类别并不重要,您只需要知道它是一个即可DocumentBuilder。该方法可以返回在运行时决定的实例,或者在其认为合适时预定的实例。

如果您想知道,可以打印出实际的类,如下所示:

 System.out.println(dbf.getClass());


请注意,该方法newInstance()不要与的相同名称的方法混淆Class,即,这两者是不同的:

 // a static method of this class

DocumentBuilderFactory.newInstance();

// an instance method of Class

DocumentBuilderFactory.class.newInstance();

不幸的名字选择肯定会引起混乱。

以上是 抽象类“ DocumentBuilderFactory”如何允许实例化新实例 的全部内容, 来源链接: utcz.com/qa/400951.html

回到顶部