使用JAXB时是否总是需要ObjectFactory类?

Mar*_*eon 18 java jaxb

使用JAXB时是否总是需要ObjectFactory类?

没有它我得到这个例外:

javax.xml.bind.JAXBException:"com.abc"不包含ObjectFactory.class或jaxb.in​​dex

收集 ObjectFactory可能有点矫枉过正.但鉴于这个例外,我猜你需要它......但不知道为什么?

ska*_*man 22

当您使用JAXBContext.newInstance(String)工厂方法时,您会获得该异常,其中传递包名称作为参数.这确实需要ObjectFactory存在,否则,JAXB不知道要处理哪些类.

如果您没有ObjectFactory,则需要JAXBContext.newInstance(Class...)传入明确的带注释类列表以添加到上下文中.

  • @Marcus:通常你只需要传入根类,是的,除非你的注释中有多态关联,在这种情况下你也需要传递它们.在`ObjectFactory`中生成的方法看起来有点奇怪,在大多数情况下,您根本不需要使用它们,您可以直接实例化.它们对于创建`JAXBElement`包装器非常有用. (2认同)

bdo*_*han 11

您可以包含一个jaxb.in​​dex文件,而不是ObjectFactory,该文件是一个文本文件,其中包含一个新的行分隔的Java类列表.

有关使用jaxb.in​​dex文件的示例,请参阅: