3

私はかなり独特で、おそらく取るに足らないものを見つけました。XSDでタイプがの要素を定義し、をxs:long設定せずminOccurs="0"にJAXBを介して実行すると、結果の要素はタイプになりlongます。ただし、minOccurs="0"XSD要素で設定すると、結果の要素はタイプになりLongます。longLongDataTypeの違いに注意してください

今、私が行っている作業で、いくつかのif (thisVariable == null)テストを行いますが、当然、longnullにすることはできません。Longできる。

*私が知りたいのは、これは結果の変数間にこの違いを引き起こすJAXBのバグですか、それともこれらの結果の変数がそれらのように出てくることを目的としていますか?*

これが私がテストに使用したファイルです:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xs:schema id="ReportRequestWrapper" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="ReportRequestWrapper">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="queryId" type="xs:long" minOccurs="0" />
        <xs:element name="reportId" type="xs:long" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

queryIdそしてreportId次のように出てきました:

public class ReportRequestWrapper {

    protected Long queryId;
    protected Long reportId;

MinOccurs = "0"を省略した場合、

        <xs:element name="queryId" type="xs:long"  />
        <xs:element name="reportId" type="xs:long"  />

結果はになりました

public class ReportRequestWrapper {

    protected long queryId;
    protected long reportId;

私はこれがかなり好奇心が強いことに気づき、これについてもう少し情報が欲しかった。

4

1 に答える 1

4

いいえ、これはバグではありません。これは、存在するかどうかminOccurs = "0"の可能性があることを意味するためqueryIdです。

あなたが言ったようにlongあり得ないのでnull、それが存在しない場合は、なしではシミュレートできませんLong

そして、これを指定しない場合、値が何であれ(存在しないもの以外)、存在minOccurs = "0"することを意味します。したがって、このケースは完全に満足しており、必要ありません。nullqueryIdlongLong

于 2012-12-05T10:20:04.453 に答える