小编Chr*_*ris的帖子

JAXB编组声明父类与实际运行时子类

我正在使用JAXB编组一个具有声明为类Foo的实例变量的类.在运行时,实例变量被设置为Foo的子类的实例,让我们说FooBar.类Foo和FooBar上都有基本的JAXB注释.

XML输出显示正在封送Foo的实例而不是FooBar.是否有一些特定的东西我需要做注释告诉JAXB如何正确编组运行时子类来代替声明的超类?

我尝试了一个实验,其中我直接编组了一个Foo类型的实例变量foo,它在运行时被设置为FooBar的一个实例.它正确编组了一个FooBar实例.

这与编组包含Foo类型的实例变量的类明显不同,因为marshal调用是在包含类上进行的,而JAXB只是编组那些类字段(我使用的是@XmlAccessorType(XmlAccessType.FIELD)注释).

我的期望是JAXB可以正确检查实例变量的运行时类型,但可能并非如此.这种情况是否要求使用此处所述的XmlAdapter实现?

JAXB继承,unmarshal到marshaled类的子类

谢谢,

克里斯

java subclass jaxb

5
推荐指数
1
解决办法
4195
查看次数

标签 统计

java ×1

jaxb ×1

subclass ×1