Я хочу сопоставить тип xsd:date с объектом LocalDate времени Joda, и, прочитав здесь, здесь и здесь, я создал следующий класс DateAdapter:
Код: Выделить всё
public class DateAdapter extends XmlAdapter {
private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd");
public LocalDate unmarshal(String v) throws Exception {
return fmt.parseLocalDate(v);
}
public String marshal(LocalDate v) throws Exception {
return v.toString("yyyyMMdd");
}
}
Код: Выделить всё
Код: Выделить всё
[ERROR] \My\Path\MyProject\target\generated-sources\xjc\my\classes\generated\Adapter1.java:[20,59] non-static method unmarshal(java.lang.String) cannot be referenced from a static context
[ERROR] \My\Path\MyProject\target\generated-sources\xjc\my\classes\generated\Adapter1.java:[24,59] non-static method marshal(org.joda.time.LocalDate) cannot be referenced from a static context
JAXB генерирует класс Adaptor1, который содержит следующее:
Код: Выделить всё
public class Adapter1
extends XmlAdapter
{
public LocalDate unmarshal(String value) {
return (my.classes.adapters.DateAdapter.unmarshal(value));
}
public String marshal(LocalDate value) {
return (my.classes.adapters.DateAdapter.marshal(value));
}
}
Теперь мои вопросы:
- поскольку мой адаптер переопределяет XmlAdapter, я не могу сделать методы статическими, как мне этого избежать?
- Могу ли я вообще избежать создания Adaptor1.class? Возможно, используя аннотацию XmlJavaTypeAdapters на уровне пакета, и если да, то как именно это сделать? (JAXB уже генерирует собственный package-info.java)
Подробнее здесь: https://stackoverflow.com/questions/125 ... -joda-time
Мобильная версия