对于一些相同的属性,把经常变化的部分经常封装成一个泛型类,类的结构也很清晰。XStream是业界流行的xml与对象的转换工具,比java自带的xml转换效率和资源都节省很多。最近在使用却遇到一个问题,泛型部分使用的@XStreamAlias死活不生效。
代码部分:
@XStreamAlias(value = "ebank")
@Data
public class BaseReq<T> implements Serializable {
private static final long serialVersionUID = 7050051411196096588L;
@XStreamAlias(value = "reqHead")
private ReqHead head;
@XStreamAlias(value = "reqBody")
private T body;
}
@Data
@XStreamAlias("reqBody")
public class AccountTransDetailReq {
/**帐号*/
private String accountNo;
/**币种*/
private String currencyType = Constant.UNITED_CURRENCY_TYPE;
/**起始日期*/
private String beginDate;
/**终止日期*/
private String endDate;
/**页码数*/
private Integer page;
/**每页条数*/
@XStreamAlias("showNum")
private Integer pageSize;
}
转化后的xml:
<?xml version="1.0" encoding="GBK"?>
<ebank>
<reqHead>
<custNo>1000464826</custNo>
<userId>000000</userId>
<tranCode>200002</tranCode>
<serialNo>20200525172229216002</serialNo>
<reqDate>20200525</reqDate>
<reqTime>172229216</reqTime>
</reqHead>
<reqBody>
<accountNo>201000153961687</accountNo>
<currencyType>CNY</currencyType>
<beginDate>20191010</beginDate>
<endDate>20191010</endDate>
<page>1</page>
<pageSize>10</pageSize>
</reqBody>
</ebank>
可以看到泛型部分没有达到预期
解决办法:
只能通过继承变相处理这个情形