我正在尝试使用JAXB处理LocalDateTime
类型的字段。我编写了一个适配器来处理转换:
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;
根据这个页面,似乎这已经足够了。然而,我一直收到以下错误:
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
添加默认构造函数。这似乎是该类的缺陷/奇怪的设计决策。是否有任何解决方法?