我正在尝试理解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中。
“被认可”是什么意思?以什么方式认可?
请教育我这个问题。谢谢。
答案 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);