【问题标题】:JAXB - Should we bind classes with @XmlSeeAlso if they are fields of the same classJAXB - 如果它们是同一类的字段,我们是否应该使用 @XmlSeeAlso 绑定类
【发布时间】:2016-06-10 13:35:40
【问题描述】:

让我们有以下类:

@XmlType(name = "TestClass")
//@XmlSeeAlso({SomeClassOne.class, SomeClassTwo.class})
public class TestClass{

    @XmlElement
    private SomeClassOne someClassOne;

    @XmlElement
    private SomeClassTwo someClassTwo;

}

我尝试使用上下文和 Marshaller 将对象序列化为 XML。我们有以下声明

context = JAXBContext.newInstance(TestClass.class);

问题是:我是否应该在 @XmlSeeAlso - @XmlSeeAlso({SomeClassOne.class, SomeClassTwo.class}) 中描述 TestClass 的所有绑定类(即 SomeClassOne 和 SomeClassTwo)?

【问题讨论】:

  • 你为什么不写单元测试并检查它?

标签: java xml serialization jaxb


【解决方案1】:

JAXB 将自动绑定用于实例化 JAXBContext 的类所包含的任何映射类。

@XmlSeeAlso用于绑定子类。

来自@XmlSeeAlso 文档的示例:

@XmlSeeAlso({Dog.class,Cat.class})
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}

这使JAXBContext.newInstance(Animal.class) 能够正确绑定DogCat 类,尽管它们从未在Animal 类中使用。

因此,在您的示例中,没有必要使用@XmlSeeAlso 来绑定SomeClassOneSomeClassTwo 类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2014-06-24
    相关资源
    最近更新 更多