JAXB - 我们是否应该将类与@XmlSeeAlso绑定,如果它们是同一个类的字段

时间:2016-06-10 13:35:41

标签: java xml serialization jaxb

让我们有以下课程:

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

    @XmlElement
    private SomeClassOne someClassOne;

    @XmlElement
    private SomeClassTwo someClassTwo;

}

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

context = JAXBContext.newInstance(TestClass.class);

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

1 个答案:

答案 0 :(得分:2)

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类。