为什么java DocumentBuilder需要创建两个步骤,而不是一个步骤?
使用DOM的javax.xml.parsers,我必须编写如下代码:为什么java DocumentBuilder需要创建两个步骤,而不是一个步骤?,java,dom,factory,document,builder,Java,Dom,Factory,Document,Builder,使用DOM的javax.xml.parsers,我必须编写如下代码: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); 我检查了它的jdk源代码: public static DocumentBuilderFactory newInstance() { return FactoryFi
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
我检查了它的jdk源代码:
public static DocumentBuilderFactory newInstance() {
return FactoryFinder.find(
/* The default property name according to the JAXP spec */
DocumentBuilderFactory.class, // "javax.xml.parsers.DocumentBuilderFactory"
/* The fallback implementation class name */
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
}
我觉得很奇怪:
谢谢 如果出于某种原因您需要使用自定义工厂(例如,如果您在JDK标准工厂中遇到错误),此方法用于允许通过配置更改工厂实现
我搜索了$JAVA_主页,没有找到lib/jaxp.properties。我的问题是,如果DocumentBuilderFactory newInstance()引用了一个固定的类名,如何配置它?@HindForsum
com.sun.org.apache.xerces.internal.jaxp.documentbuilderfactorympl
是默认的回退,如果properties类中或使用-Djavax.xml.parsers.DocumentBuilderFactory=…
方法中没有提供其他实现,则将使用它。奇怪的是,只要类本身是“DocumentBuilderFactory”,它怎么能“找不到”DocumentBuilderFactory类本身,然后回退到apache实现?谢谢。DocumentBuilderFactory
是一个接口,这是一个实际的实现,可以完成这些工作。这就是为什么JVM寻找接口的实现并回退到apache的实现。
* Use the properties file "lib/jaxp.properties" in the JRE directory.
* This configuration file is in standard <code>java.util.Properties
* </code> format and contains the fully qualified name of the
* implementation class with the key being the system property defined
* above.