TL; DR
如何使用@XmlElementWrapper
注释为外部jar中的类“伪造”?
更多详情
完整的场景有点令人费解,并且有许多我不想更新的遗留代码,所以请耐心等待......在我的项目中,我们会从另一个团队获得一个jar文件。他们无法为我添加@XmlElementWrapper
,因为此代码是自动生成的,并且根本没有注释。在这段代码中,有很多类都有类型化的数组到其他类。
尝试编组/解组这些类时出现问题。如果类中的类型化数组为空,则XML将不包含该属性的节点。
例如,如果外部类看起来像这样:
public class MyClass {
private OtherClass[] myArray;
// Getter & Setter also
}
生成的XML看起来像这样:
<MyClass>
<OtherClass>...</OtherClass>
<OtherClass>...</OtherClass>
<OtherClass>...</OtherClass>
<!-- More attributes here... -->
</MyClass>
OtherClass[] myArray
中有元素时,一切都很好。 NullPointerExceptions
为空时出现问题(和OtherClass[] myArray
)。在这种情况下,我的XML看起来像:
<MyClass>
<!-- More attributes here... -->
</MyClass>
因此,当XML被解组时,OtherClass[] myArray
为null
,我会看到一个很好的StackTrace。
在理想的世界中,我会将@XmlElementWrapper
添加到OtherClass[] myArray
的定义中,但正如我所说,这是一个外部类,不能以这种方式编辑。
有解决方法吗?我已经用JAXB Bindings搜索了一种方法,但到目前为止,我的搜索没有产生任何结果。
任何指针都会非常感激(即使答案是“无法完成”)。