在JAXB中使用no-args构造函数处理最终的内置类

时间:2018-04-23 13:10:10

标签: java xml jaxb

我创建了以下Garde类,其beginDate类型endDatejava.time.LocalDateTime为字段

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "garde")
public class Garde {
    private LocalDateTime beginDate, endDate;
    //constructors and methods
  }

当我尝试编组Garde列表时,我得到了这个例外:

No default constructor found on class java.time.LocalDateTime
java.lang.NoSuchMethodException: java.time.LocalDateTime.<init>() 
....

我尝试使用no-args构造函数创建另一个扩展java.time.LocalDateTime的类,但它不起作用,因为LocalDateTime类是final,那么如何处理呢?

1 个答案:

答案 0 :(得分:1)

您可以实施XmlAdapter并使用@XmlJavaTypeAdapter配置它。

有些事情:

public class LocalDateTimeAdapter extends 
    XmlAdapter<String, LocalDateTime> {
    public LocalDateTime unmarshal(String value) {
        return value == null ? null : LocalDatTime.parse(value);
    }
    // ...
}

在你的班上:

@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
private LocaDateTime beginDate;

您还可以将@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)})注释应用于package-info.java