2014-03-26 65 views
3

我有如下關係:JAXB馬歇爾抽象類,而不是唯一

Class A abstract; 
Class B concrete extends A; 
Class C has a one to one relation with B. 

讓我們說

A a=new B(); 

如果我名帥一個將通過使用提出了關於XML數據的整理乙

<B> 
</B> 

,但如果我們說

C c = new C(); 
c.setA(new B());. 

我得到:

<C> 
<A> 
</A> 
</C> 

但A是抽象所以解組異常期間將被拋出。我的問題是如何讓JAXB瑪西爾具體的而不是抽象類C的編組期間使XML文件的結果時便會:

<C> 
<B> 
</B> 
<C> 

回答

2

你必須annote的Clacc下,在這樣

public class C{ 

@XmlElements({ 
    @XmlElement(name="B", type=B.class), 
    @XmlElement(name="D", type=D.class), 
    @XmlElement(name="E", type=E.class), 
    @XmlElement(name="F", type=F.class), 
    //.... 
    })  
    private A a; 


} 
+1

問題是,有23個不同的實現,該問題可能是我使用A.getClass創建的JAXBContext我會盡量給我們包含具體的軟件包類。 –