gpt4 book ai didi

java - JAXBContext newInstance(class,class) 解释

转载 作者:行者123 更新时间:2023-11-30 10:41:54 25 4
gpt4 key购买 nike

我试图了解 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

Parameters:

classesToBeBound - list of java classes to be recognized by the new JAXBContext.

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

请教我这个问题。谢谢。

最佳答案

识别这些对象旨在由 JAXB 编码和解码的方式,因此必须告知 JAXB 它们是哪些类,以便它将它们识别为有效的 JAXB 目标(并扫描/处理它们包含的相关注释)。

在您链接的示例中,List 被编码,其中包含 Book 对象(因此 Books 也被“级联”编码),因此两者都必须是JAXB“认可”/“已知”。

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

public static JAXBContext newInstance(Class... classesToBeBound)

来自描述:

Not only the new context will recognize all the classes specified, but it will also recognize any classes that are directly/indirectly referenced statically from the specified classes.

因为你的 List 引用了 Book,我想你可以从参数中省略 Book 类,然后简单地调用

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

关于java - JAXBContext newInstance(class,class) 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com