2016-07-05 3 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

それは「トンあなたがマッピングに注釈を付け何以外のものを使用しdoesnのを確認するためにあなたのクラスに@XmlAccessorType(XmlAccessType.NONE)を追加してみてください、この方法は、あなたも@XmlTransientを削除することができるはずです注釈。

+0

役に立たなかったどちらも反対ではなかった: 'XmlAccessType.FIELD' –

+0

私は持っていた別のアイデアへの答えを変更しました。 –

0

私はこの問題を回避している。私は/がretrieveInfo()getInfo()と改名し、アビリティ新しいgetInfo()以外のすべてを与えたリファクタリング。

しかし、誰かが実際に問題を解決する方法についてのアイデアを持っているなら、私はまだ学びたいと思っています。