Java JAXBContext newInstance(类,类)说明

Java JAXBContext newInstance(类,类)说明,java,jaxb,Java,Jaxb,我试图理解JAXB,并希望使用JAXB初始化多个对象。我在StackOverFlow中发现了一个很好的问题 所以我在看代码,试图理解每一部分。我认为我难以理解的第一个也是关键的部分是以下几行: JAXBContext jc = JAXBContext.newInstance(JAXB2_Lists.class, JAXB2_Book.class); 通过查看JAXBContext文档,我无法确定正在使用哪个newInstance方法。猜猜哪一个被使用,我真的不明白 我猜它正在使用以下重载

我试图理解JAXB,并希望使用JAXB初始化多个对象。我在StackOverFlow中发现了一个很好的问题

所以我在看代码,试图理解每一部分。我认为我难以理解的第一个也是关键的部分是以下几行:

JAXBContext jc = JAXBContext.newInstance(JAXB2_Lists.class, JAXB2_Book.class);
通过查看JAXBContext文档,我无法确定正在使用哪个newInstance方法。猜猜哪一个被使用,我真的不明白

我猜它正在使用以下重载

public static JAXBContext newInstance(Class[] classesToBeBound,
                                      Map<String,?> properties)
                               throws JAXBException
publicstaticjaxbcontextnewinstance(Class[]classestobeind,
地图属性)
抛出异常
参数:

classesToBeBound—要由新用户识别的java类的列表 JAXBContext

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


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

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

在链接的示例中,编组了一个
列表
,其中包含
Book
对象(因此书籍也“级联”编组),因此JAXB必须“识别”/“已知”

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

根据描述:

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

因为您的
列表
引用了
书籍
,我想您可以从参数中省略
书籍
类,只需调用

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

通过JAXB对这些对象进行封送和解封送的方式进行识别,因此必须告诉JAXB它们是哪些类,以便它将它们识别为有效的JAXB目标(并扫描它们包含的相关注释)。谢谢Berger,但在编码示例中封送的是Book类,对吗?代码首先有List类,所以它是同时编组List类和Book类吗?是的,在链接的示例中,一个列表被编组,其中包含Book对象(因此书籍也被“级联”编组),所以两者都必须被JAXB“识别”。为什么不提供这些答案作为答案,这样我就可以向您竖起大拇指了?=)我是否确定了正确的重载方法?那么对于类[]classesToBeBound,可以提供类对象的列表吗?那么,“映射属性”参数是如何涉及的呢?这一点根本没有解释,因为我可以从我提供的文档中确定。谢谢你的帮助您没有调用此方法,我更新了答案以提供更多详细信息。对于
JAXB新实例
,我有一个小小的疑问。我需要
unmarshal
不同的
maven子模块中存在的类
。我现在知道在同一个
maven模块或项目中如何传递
名称,但如果类存在于不同的
子模块中
,那么如何传递
名称?我是否需要将
名称与
子模块
信息一起传递?如果是这样的话,你能给我举个例子吗?我试了一个。很多东西,搜索了很多答案,但什么也找不到。