Я пытаюсь использовать JAXB с полями типа LocalDateTime
. Я написал адаптер для обработки преобразования:Использование LocalDateTime с JAXB
public class LocalDateTimeXmlAdapter extends XmlAdapter<String, LocalDateTime> {
@Override
public String marshal(LocalDateTime arg0) throws Exception {
return arg0.toString();
}
@Override
public LocalDateTime unmarshal(String arg) throws Exception {
return LocalDateTime.parse(arg);
}
}
Я зарегистрировал адаптер в package-info.java
так:
@XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(type=LocalDateTime.class, value=LocalDateTimeXmlAdapter.class)
})
package xml;
import java.time.LocalDateTime;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
Это, как представляется, достаточно согласно this page. Однако, я получаю следующее сообщение об ошибке:
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.time.LocalDateTime does not have a no-arg default constructor.
Я понимаю, причина выброса исключения, но я с трудом могу добавить конструктор по умолчанию java.time.LocalDateTime
. Это, по-видимому, является недостатком класса/странного дизайнерского решения. Есть ли обходные пути?