2012-04-23 3 views
4

Я имею три классаJAXB Демаршаллизация Использование @XMLJavaTypeAdapters

@XmlRootElement 
public class GeofenceParameter{ 

    private GeofenceCenterAddress geofenceCenterAddress; 

    private GeofenceCenterCoordinates geofenceCenterCoordinates; 
} 

public class GeofenceCenterAddress extends GeofenceParameter{ 

} 

public class GeofenceCenterCoordinate extends GeofenceParameter{ 

} 

Я Сделал два различных XMLAdapter расширенных классов Маршалл и маршализацией в Геозонах Paramtere в GeofenceCenterAddress И GeofenceCentereCoordinate

Class forGeofenceCenterCoordinate extends XmlAdapter<ValueType,BoundType>{ 
} 

Class forGeofenceCenterAddress extends XmlAdapter<ValueType,BoundType>{ 
} 

для получения экземпляра из класса GeofenceCenterAddress или GeofenceCenterCoordinate из GeofenceParamter в зависимости от отправки запроса на мыло.

Для этого я использовал аннотацию в файле package-info.java @XmlJavaTypeAdapters{(@XmlJavaTypeAdapter(type=forGeofenceCenterCoordinate)),@XmlJavaTypeAdapter(type=forGeofenceCenterAddress)}

Но в вебе-службе, это даст мне экземпляр класса, который я указанный кулак в аннотациях т.е. этого @XmlJavaTypeAdapter(type=forGeofenceCenterCoordinate) class not of @XmlJavaTypeAdapter(type=forGeofenceCenterAddress) от GeofenceParamter.

Can U Пожалуйста, помогите мне в поиске экземпляра второго класса и в наследовании JAXB Marshalling And Unmarshalling.

Заранее спасибо

ответ

1

Я не помню, использовав @XmlJavaTypeAdapters, но нормальное использование в @XmlJavaTypeAdapter аннотацию бы просто @XmlJavaTypeAdapter(forGeofenceCenterCoordinate.class).

Параметр type необходим только в том случае, если аннотация применяется на уровне пакета.