0

我有一个名为 Ability 的类,它继承自一个抽象类CampaignObject

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;
    }
4

2 回答 2

0

我已经绕过了这个问题。我将除 Abilities 之外的所有内容重构/重命名getInfo()为新的.retrieveInfo()getInfo()

不过,如果有人对如何实际解决问题有想法,我仍然愿意学习。

于 2016-07-05T20:41:40.090 回答
0

尝试添加@XmlAccessorType(XmlAccessType.NONE)到您的类以确保它不使用除了您为映射注释的内容之外的任何内容,这样,您还应该能够删除@XmlTransient注释。

于 2016-07-05T14:07:07.307 回答