java - 为什么 LocalDateTime 没有 String 构造函数?

标签 java java-8 java-time date

我最近在尝试通过 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/

相关文章:

java - 独立于区域设置的年周日期格式

javascript - Selenium - 元素不可见错误 - 周期性发生

java - 如何在 Java 中将 Long 转换为 int?

java - Arrays.asList(word.toCharArray()) 不返回列表?

java - 这是哪种日期时间格式?

java - 将包含阿拉伯字符的字符串转换为日期

java - 防火墙和标准 GWT-RPC 是否存在任何问题?

java - Datapipeline 中的 AWS Athena JDBC Jar 使用引发 Java 版本错误

java - 将 lambda 作为方法参数传递并排序映射

Java 8 : Fetching selective request parameters