java unmarshall LocalDateTime错误
这是我的适配器类:
public class LocalDateTimeAdapter extends XmlAdapter { @Override public LocalDateTime unmarshal(String v) throws Exception { return new LocalDateTime(v); } @Override public String marshal(LocalDateTime v) throws Exception { return v.toString(); }
}
这是一个对象类,我想存储日期:
@XmlAccessorType(XmlAccessType.FIELD) public class Object { @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) private LocalDateTime time; public LocalDateTime getTime() { return time; }
出于某种原因,我无法编译它。 它表明问题是return new LocalDateTime(v);
。 这是我得到的错误:
Error:(9, 16) java: constructor LocalDateTime in class java.time.LocalDateTime cannot be applied to given types; required: java.time.LocalDate,java.time.LocalTime found: java.lang.String reason: actual and formal argument lists differ in length
和xml部分:
2000-01-01T19:45:00Z
我正在关注这个例子。
可能你正在使用Java 8中的LocalDateTime
。这个类没有任何构造函数用于字符串。
在您关注的示例中, LocalDateTime
来自JodaTime
。
所以,你可以这样做:
-
导入
org.joda.time.LocalDateTime
(您将需要JodaTime依赖)而不是java.time.LocalDateTime
; -
或者将
unmarshal
方法更改为以下内容:@Override public LocalDateTime unmarshal(String v) throws Exception { return LocalDateTime.parse(v); }
您可能需要通知日期时间格式 ,因为默认格式为2011-12-03T10:15:30
,也许这样:
@Override public LocalDateTime unmarshal(String v) throws Exception { return LocalDateTime.parse(v, DateTimeFormatter.ISO_INSTANT); }
此外,在java.time.LocalDateTime
toString
将输出以下ISO-8601格式之一:
- UUUU-MM-dd’T’HH:毫米
- UUUU-MM-dd’T’HH:MM:SS
- UUUU-MM-dd’T’HH:MM:SS.SSS
- UUUU-MM-dd’T’HH:MM:SS.SSSSSS
- UUUU-MM-dd’T’HH:MM:ss.SSSSSSSSS