4

私は3つのクラスを持っています

@XmlRootElement
public class GeofenceParameter{

    private GeofenceCenterAddress geofenceCenterAddress;

    private GeofenceCenterCoordinates geofenceCenterCoordinates;
}

public class  GeofenceCenterAddress extends GeofenceParameter{

}

public class  GeofenceCenterCoordinate extends GeofenceParameter{

}

GeofenceCenterAddress と GeofenceCentereCoordinate でジオフェンス パラメータをマーシャリングおよびアンマーシャリングするために、2 つの異なる XmlAdapter 拡張クラスを作成しました。

Class forGeofenceCenterCoordinate extends XmlAdapter<ValueType,BoundType>{
}

Class forGeofenceCenterAddress extends XmlAdapter<ValueType,BoundType>{
}

Soap リクエストの送信に応じて、GeofenceParamter から GeofenceCenterAddress または GeofenceCenterCoordinate クラスのいずれかに関連するインスタンスを取得します。

このために、package-info.javaファイルで注釈を使用しました@XmlJavaTypeAdapters{(@XmlJavaTypeAdapter(type=forGeofenceCenterCoordinate)),@XmlJavaTypeAdapter(type=forGeofenceCenterAddress)}

しかし、Web サービスでは、注釈で最初に指定したクラスのインスタンス、つまり@XmlJavaTypeAdapter(type=forGeofenceCenterCoordinate) class not of @XmlJavaTypeAdapter(type=forGeofenceCenterAddress)GeofenceParamter からのインスタンスが返されます。

JAXB継承のマーシャリングとアンマーシャリングでも2番目のクラスのインスタンスを取得するのを手伝ってください。

前もって感謝します

4

1 に答える 1

1

を使用したことを覚えていませんが、注釈@XmlJavaTypeAdaptersの通常の使用法は単純にです。@XmlJavaTypeAdapter@XmlJavaTypeAdapter(forGeofenceCenterCoordinate.class)

typeパラメーターは、注釈がパッケージレベルで適用される場合にのみ必要です。

于 2012-04-24T11:59:06.620 に答える