java - 我用 XmlJavaTypeAdapters 注释什么包信息?

标签 java jaxb

我研究过Blaise Doughan's answer to a question on this subject但还有一个问题。

XmlJavaTypeAdapters 允许您列出一堆 XmlJavaTypeAdapter 注释,每个注释都控制 JAXB 如何将不可绑定(bind)类型映射到可绑定(bind)类型。

您可以在包级别使用此注释。当您这样做时,每个 XmlJavaTypeAdapter 注释都需要完全指定其 type() 属性。

似乎没有要求被注释的包与被改编的不可绑定(bind)类型的包有任何关系。那很方便也很好。

然而,这引出了我的下一个问题:如果带注释的包和正在适配的类型的包之间没有关系,那么 JAXB 如何发现包级别的 XmlJavaTypeAdapters 注释?换句话说,它如何知道要为潜在的 XmlJavaTypeAdapters 注释查询哪些包?我可以在 .ear 文件的 lib 目录中创建一个随机包,比如说,一个 .jar 文件,其中包含一个巨大的 package-info 为我的所有不可绑定(bind)类型标注了所有适配器的类?

最佳答案

当 JAXB 运行时加载 JAXB 注释的类时,它会在与该类相同的包中查找 package-info.java,并检查它以查找包级注释。因此,虽然 XmlJavaTypeAdapters 不必与“不可绑定(bind)”类型驻留在同一个包中,但它确实必须与“可绑定(bind)”类型驻留在同一个包中类型。

例如,假设我在包 X 中有一个 JAXB 注释类 A,它在包中有一个 B 类型的属性。为了绑定(bind) B 属性,假设需要一个类型适配器。该适配器可以在 A 本身中指定,也可以在包 X 中的 package-info.java 中指定。包 Y 几乎是任意的,JAXB 运行时不感兴趣。

我希望这是有道理的。

关于java - 我用 XmlJavaTypeAdapters 注释什么包信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735737/

相关文章:

java - eclipse 中缺少 android.jar

java - 监听器调用另一个监听器

ant - 如何从 ANT 执行 JAXB 编译器

jaxb - moxy:RuntimeTypeInfoSet 的等价物是什么

java - 针对泛型和特定类型或该类型列表的灵活 JAXB XML 解析

java - JAXBContext.newInstance 变体

java - 需要一些帮助来理解这个图形匹配代码

java - 更新集合时 hibernate 删除孤儿

java - 为什么 LibGDX 中的实例会互相覆盖?

java - 如何创建采用 Generic 对象的 JAXB Marshaller