让我们进行以下课程:

@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)吗?

最佳答案

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

10-08 11:14