我有一个通用(POJO-)容器来与客户共享统计数据:
@XmlRootElement
public class StatsSeries implements Serializable {
private TreeMap<Date, Number> timeSeries;
/* accessor methods */
}
根据数据,服务器存储Long
或Integer
存储Double
在其中,这就是我使用 abstract 的原因java.lang.Number
。
编组工作正常,并且指示具体类的提示包含在数据中:
"timeSeries": {
"entry": [
{
"key": "2012-08-20T00:00:00Z",
"value": {
"$": "24",
"@type": "xs:long"
}
},
....
]
}
或者在 XML 表示中:
<timeSeries>
<entry>
<key>2012-08-20T00:00:00Z</key>
<value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:long">24</value>
</entry>
...
</timeSeries>
当试图解组这个时,我得到一个javax.xml.bind.UnmarshalException: Unable to create an instance of java.lang.Number
.
我看到了这个问题,但这对我没有帮助。我该如何注释java.lang.Number
?还有其他建议吗?
更新:查看JAXB-890,我知道它应该在 JDK 1.7 或使用中修复com.sun.xml.bind:jaxb-impl:2.2.6
- 对我来说都不适用。