2016-07-05 19 views
0

我有一個叫做Ability的類,它繼承自抽象類CampaignObjectJAXB marshals「non-field」

CampaignObject有一個抽象方法,稱爲getInfo()

能力沒有自己的信息。如果要求他們提供信息,則應提供其所有者的信息。

當我使用JAXB.marshal(...)編組時,它包含所有者信息文本,作爲每種能力的XmlElement。註釋Ability.getInfo()@XmlTransient沒有區別。

我該怎麼辦?

非常感謝。

這樣的代碼:

@XmlRootElement(name = "ability") 
public class Ability extends CampaignObject { 


    private String val; 
    private Hero owner; 

    ... 

    @Override 
    @XmlTransient 
    public String getInfo() { 
     return getOwner().getInfo(); 
    } 

    @XmlAttribute 
    public String getVal() { 
     return val; 
    } 

    @XmlTransient 
    public Hero getOwner() { 
     return owner; 
    } 

回答

0

嘗試增加@XmlAccessorType(XmlAccessType.NONE)到您的類,以確保它不「T使用任何除了你註釋什麼的映射,這樣,你也應該能取出@XmlTransient註釋。

+0

沒有幫助。反過來也沒有:'XmlAccessType.FIELD' –

+0

更改了我的另一個想法的答案。 –

0

我已經規避這個問題。我重構/重命名爲getInfo()retrieveInfo(),給了一切,除了能力新getInfo()

不過,如果有人對如何真正解決問題有一個想法,我仍然願意學習。