Java 为什么jaxb会生成这样的代码?
为什么jaxb会在下面生成名为Java 为什么jaxb会生成这样的代码?,java,xml,design-patterns,jaxb,Java,Xml,Design Patterns,Jaxb,为什么jaxb会在下面生成名为Result的类型参数 无法像这样生成getter/setter: protected Result result; public void setResult(Result value) { this.approveRequestResult = (Result value); } public Result getResult() { return resu
Result
的类型参数
无法像这样生成getter/setter:
protected Result result;
public void setResult(Result value) {
this.approveRequestResult = (Result value);
}
public Result getResult() {
return result;
}
此文件由JavaTM XML绑定体系结构(JAXB)参考实现生成:
protected JAXBElement<Result> result;
public void setResult(JAXBElement<Result> value) {
this.approveRequestResult = ((JAXBElement<Result> ) value);
}
public JAXBElement<Result> getResult() {
return result;
}
protectedjaxbelement结果;
公共void setResult(JAXBElement值){
this.approveRequestResult=((JAXBElement)值);
}
公共JAXBElement getResult(){
返回结果;
}
也许这是我不知道的一种设计模式?当JAXB本身的值不能正确表示XML表示时,它将生成类型为
JAXBElement
的字段/属性。以下是一些案例:
xsd:choice
结构时,其中属性可以对应于相同类型(即xsd:string
)的不同XML元素(即foo
和bar
)。如果值是Hello World
,您是否将其封送为元素foo
或bar
可能是因为结果需要再次通过JAXB序列化rant@JarrodRoberson-这是一个可回答且有用的问题,请参见:@BlaiseDoughan不,这里没有问题,如果问题得到纠正,正如您所指出的,它仍然需要作为副本关闭。@JarrodRoberson-有人问为什么会生成
JAXBElement
类型的字段/属性。发生这种情况的原因至少有三个。我已经列举了一些相关链接,但我不会说这是其中任何一个的重复。