我研究过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/