私は JAXB 2.1 を使用していますが、表示される XML 出力に混乱しています。以下には、同じ親を拡張する 2 つの子クラスがあります。REST を使用してブラウザーでマーシャリングされ、XML として表示されると、子クラス 1 (GeoLocationDecodedPayload) には、予想どおりgeoLocationDecodedPayloadのルート要素が常に含まれます。何らかの理由で、子クラス 2 (AltitudeDecodedPayload)には、@XMLRootElement アノテーションで指定されているように予期しないルート要素として高度DecodedPayloadがありません。XML 出力は、 geoPayload のスーパー クラス (GeoPayload) @XMLRootElement を示しています。これら 2 つのクラスの動作が異なる理由は何ですか?
子クラス 1:
package com.api.model.vo.decoder;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import com.api.util.decoder.DecoderConstants;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "geoLocationDecodedPayload")
public class GeoLocationDecodedPayload extends GeoPayload implements Serializable {
public GeoLocationDecodedPayload() {}
}
子クラス 2:
package com.api.model.vo.decoder;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import com.api.util.decoder.DecoderConstants;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "altitudeDecodedPayload")
public class AltitudeDecodedPayload extends GeoPayload implements Serializable {
public AltitudeDecodedPayload() {}
}
親クラス:
package com.api.model.vo.decoder;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "geoPayload")
public class GeoPayload {
public GeoPayload() {}
}