我必须在下课后进行编组;
@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类绑定到Message类的相同XML上下文。您可以使用花括号列出多个类别。使用泛型类型(T或?)时,必须指定哪些类属于同一上下文。
@XmlRootElement(name = "SYSMessage")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({DebitAccount.class})
public class Message<T> { ... }