我想实现一个返回JAXBElement的方法,代码是
@XmlRootElement(name = "history")
@XmlAccessorType(XmlAccessType.FIELD)
public class IBHistoryInfo {
@XmlElement(name="trade")
private List<IBTradeInfo> mTrade;
public void updateTradeValue(int reqId, String date, double open, double high, double low,
double close, int volume, int count, double WAP, boolean hasGaps){
IBTradeInfo info = new IBTradeInfo();
info.setReqId(reqId);
info.setDate(date);
info.setOpen(open);
info.setHigh(high);
info.setLow(low);
info.setClose(close);
info.setVolume(volume);
info.setCount(count);
info.setWap(WAP);
info.setHasGaps(hasGaps);
this.setTradeInfo(info);
}
public void setTradeInfo(IBTradeInfo tradeinfo){
mTrade.add(tradeinfo);
}
public List<IBTradeInfo> getTradeInfo(){
if (mTrade == null) {
mTrade = new ArrayList<IBTradeInfo>();
}
return this.mTrade;
}
}
现在我不知道如何创建一个在上面的类中返回JAXBElement的方法
例如
public JAXBElement<IBTradeInfo> getTradeXML(){
return mTrade
}
答案 0 :(得分:6)
以下是如何实现getTradeXML()方法:
public JAXBElement<IBTradeInfo> getTradeXML(){
if(null == mTrade || mTrade.size() == 0) {
return null;
}
IBTradeInfo tradeInfo = mTrade.get(0);
QName qname = new QName("http://www.example.com", "trade-info");
return new JAXBElement(qname, IBTradeInfo.class, tradeInfo);
}
答案 1 :(得分:-1)
我相信,你一次只能返回1个元素。在这种情况下,您可能需要编写类似的内容:
public JAXBElement<IBTradeInfo> getTradeXML(){
return new JAXBElement<IBTradeInfo>(mTrade.get(0), IBTradeInfo.class);
}
只是一个猜测。