最近,我一直在使用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));
- 据我所知,您不能为抽象和接口类实例化(换句话说,创建对象)。我正确吗?
getInstance()
和newInstancce()
方法是否会创建上述抽象类的实例?
使用抽象类及其新对象方面是否有什么遗漏?
DocumentBuilderFactory.newInstance()
不是一个抽象工厂方法,因为返回的类型DocumentBuilderFactory
是一个抽象类。根据定义,如果返回的类型是接口或抽象类,则工厂方法是抽象的,这基本上意味着返回的实例必须是声明的返回类型的子类。 - Bohemian