0

クライアントと統計データを共有するための汎用 (POJO-) コンテナーがあります。

@XmlRootElement
public class StatsSeries implements Serializable {

    private TreeMap<Date, Number> timeSeries;

    /* accessor methods */
}

データに応じて、サーバーはLongIntegerまたはそのDouble中に格納します。これが、私が抽象を使用している理由です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- どちらも私にとってはうまくいきません。

4

1 に答える 1

0

型消去が与えられた場合にこれが機能するかどうかはわかりませんが、次のように注釈を付けてみてください。XmlElementRef

    @XmlElementRef
    private TreeMap<Date, Number> timeSeries;

「このアノテーションが使用されると、XML 要素名は実行時に JavaBean プロパティのタイプのインスタンスから派生します」。

それができない場合は、このリンクが役立つかどうかを確認してください。

于 2012-08-22T16:25:09.600 に答える