JAXBContext newInstance(类,类)的解释

时间:2016-07-13 13:33:09

标签: java jaxb

我正在尝试理解JAXB并希望使用JAXB初始化多个对象。我在StackOverFlow中找到了一个很好的问题并回答了问题。

How to marshalling the muliptle object using jaxb

所以我正在查看代码,试图理解每一块。第一个也是关键部分(我认为)我无法理解,如下所示:

JAXBContext jc = JAXBContext.newInstance(JAXB2_Lists.class, JAXB2_Book.class);

通过JAXBContext文档,我无法确定正在使用哪个newInstance方法。猜猜哪一个正在被使用,我真的不理解它。

http://docs.oracle.com/javaee/5/api/javax/xml/bind/JAXBContext.html#newInstance(java.lang.Class...)

我的猜测是它正在使用以下重载

public static JAXBContext newInstance(Class[] classesToBeBound,
                                      Map<String,?> properties)
                               throws JAXBException
  

参数:

     

classesToBeBound - 新要识别的java类列表   JAXBContext中。

“被认可”是什么意思?以什么方式认可?

请教育我这个问题。谢谢。

1 个答案:

答案 0 :(得分:1)

通过JAXB对这些对象进行编组和解组的方式识别,因此必须告诉JAXB它们是哪些类,以便它们将它们识别为有效的JAXB目标(和扫描) /处理它们包含的相关注释。

在您的链接的示例中,List被编组,其中包含Book个对象(因此书籍也被编组并且#34;级联&#34;)因此两者都必须是& #34;识别&#34; /&#34;已知的&#34;由JAXB。

此外,您实际调用的方法是:

public static JAXBContext newInstance(Class... classesToBeBound)

来自说明:

  

不仅新的上下文会识别所有指定的类,而且   它还将识别任何直接/间接的类   从指定的类静态引用。

由于您的List引用Book,我猜您可以从参数中省略Book类,只需调用

JAXBContext jc = JAXBContext.newInstance(JAXB2_Lists.class);