JAXBContext上下文路径vs @XMLSeeAlso

时间:2017-01-20 14:38:59

标签: java jaxb

我对JAXB的这两个方面感到困惑。

据我所知,当将冒号分隔的包名称作为JAXBContext的newInstance方法的上下文路径传递时,JAXB会将这些包下的所有类添加到其作用域中,以便在marshall / unmarshall /等操作中使用验证...等

@XmlSeeAlso注释指示JAXBContext绑定类。我见过的所有例子都使用这个注释来指定它的子类(我实际上无法说明原因)。

以下是我的问题:

  

1-如果由类引用的类,也可以省略@XmlSee   注释在传递给JAXBContext newInstance的包中   方法

     

2-如果上述情况属实,那么为什么我们在第一个中需要这个注释   在那里,我们可以简单地将包含我们需要的类的所有包传递给newInstance   功能

     

3-如果上述情况不属实,我们是否只能使用包含top的软件包   级别类传递给newInstance,并使用注释@XmlSeeAlso来引用所有   这些班的孩子?

1 个答案:

答案 0 :(得分:1)

  

1-如果由类引用的类,也可以省略@XmlSee   注释在传递给JAXBContext newInstance的包中   方法

是的,@XmlSeeAlso用于指示JAXBContext查找newInstance()未加载的类。要让JAXBContext了解所使用的子类,您可以使用@XmlSeeAlso指定或传递newInstance方法中的所有子类。

  

2-如果以上是真的,那么为什么我们需要这个注释   第一个地方,我们可以简单地传递所有包含的包   我们需要newInstance函数的类吗?

@XmlSeeAlso方法主要用于您自己创建JAXB类时。当您使用XSD-> JAXB方法时,首选JAXBContext.newInstance()并将所有包分隔为: