我必须编码下课;
@XmlRootElement(name = "SYSMessage")
@XmlAccessorType(XmlAccessType.FIELD)
public class Message<T> {
@XmlPath("Personel")
private Personel personel;
@XmlPath("AccountType")
private T accountType;
...
因此,在生产中,我设置了通用帐户类型类,其中包含一些名为“DebitAccount”的对象 我必须使用通用类型,因为 debitAccount 会更改很多次。
Message<DebitAccount> msg = new Msg<>();
DebitAccount dAccount= new DebitAccount();
msg.setAccountType(dAccount);
当我编码 Message 类时,我得到了以下 xml 结果作为帐户类型; ... org.demo.blabla.DebitAccount@123123 ...
在DebitAccount类中;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class DebitAccount{
@XmlPath("ID")
private String id;
@XmlPath("Visa")
private String visaNo;
我发现这是由于类型删除而发生的。 Moxy 只是无法简单地理解我的对象是 DebitAccount。所以它将对象视为字符串。我怎样才能让 moxy 理解我的复合对象。
最佳答案
您必须使用 @XmlSeeAlso 注释将 DebitAccount 类绑定(bind)到 Message 类的同一 XML 上下文。您可以使用花括号列出多个类。使用泛型类型(T 或?)时,您必须指定哪些类属于同一上下文。
@XmlRootElement(name = "SYSMessage")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({DebitAccount.class})
public class Message<T> { ... }
关于xml - 如何避免编码时 JAXB、MOXY 实现中的类型删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239042/