オブジェクトに非整列化しようとしているときに、継承の問題に悩まされています。ここに私のクラスがあります
あ
@XmlRootElement(name="A")
public abstract class A{
}
B
@XmlRootElement(name="B")
public class B extends A{
String bField;
@XmlAttribute(name="b")
public String getBField(){
return bField;
}
public void setBField(String value){
this.bField = value;
}
}
ハ
@XmlRootElement(name="C")
public class C extends A{
String cField;
@XmlAttribute(name="c")
public String getCField(){
return cField;
}
public void setCField(String value){
this.cField = value;
}
}
容器
@XmlRootElement(name="container")
public class Container{
ArrayList<B> listB;
ArrayList<C> listC;
public ArrayList<B> getListB(){
return listB;
}
@XmlElementWrapper(name="list-B")
@XmlElement(name="b")
public ArrayList<B> getListB(){
return listB;
}
@XmlElementWrapper(name="list-C")
@XmlElement(name="c")
public ArrayList<C> getListC(){
return listC;
}
public ArrayList<C> getListC(){
return listC;
}
}
次に、入力 XML ファイル
<container>
<list-B>
<b b="BFied"/>
</list-B>
<list-C>
<c c="CField"/>
</list-C>
</container>
Spring OXM と統合された EclipseLink JAXB を使用しました。xml ファイルをコンテナーのインスタンスに非整列化すると、すべてが複製されます。リスト B には、複製された 2 つの B インスタンスがあります (リスト C と同じこと)。
どこで間違ったのか教えてください。ありがとうございました!