Обычно, когда вы объявляете XmlAdapter
с @XmlJavaTypeAdapter
, JAXB создает экземпляр этого адаптера, используя пустой конструктор, чтобы использовать его во время операций маршала или демаршалла.
Но Unmarshaller
и * Интерфейсы 1006 * имеют метод для предоставления экземпляра адаптера.
Вы можете предоставить альтернативный конструктор для вашего DateAdapter
с параметром для формата, который вы хотите использовать, а также объявить DEFAULT_FORMAT. Примерно так:
private String format;
public DateAdapter() {
this(DEFAULT_FORMAT);
}
public DateAdapter(String format) {
this.format = format;
}
А когда вам нужно разобрать:
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setAdapter(DateAdapter.class, new DateAdapter(someFormat));
Object o1 = unmarshaller.unmarshal(....);
unmarshaller.setAdapter(DateAdapter.class, new DateAdapter(otherFormat));
Object o2 = unmarshaller.unmarshal(....);