我最近在尝试通过 Spring MVC 将 JSON 数据发布到具有 LocalDateTime
的 POJO 时遇到以下错误属性:
no String-argument constructor/factory method to deserialize from String value
为了解决这个错误,我必须更改我的 setter
public void setToDate(LocalDateTime toDate) {
this.toDate = toDate;
}
至
public void setToDate(String toDate) {
this.toDate = LocalDateTime.parse(toDate);
}
这给我留下了一个问题:为什么不 LocalDateTime
有一个String
构造函数以及静态 parse()
方法?
最佳答案
(几乎)java.time
中的类根本没有任何构造函数,至少没有公共(public)构造函数。您只能通过调用静态工厂方法之一(~.parse()
是其中之一)来创建这些类的实例。
当然,这是创建 java.time
包时的设计决策。
做出这个决定的一个原因可能是有一条规则规定构造函数不应该抛出异常,出于某些我目前不记得的原因。但很明显,从任意字符串构造 LocalDateTime
实例会导致很多可能的错误。
关于java - 为什么 LocalDateTime 没有 String 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60547486/