java localdate_Java LocalDate:解析 – 使用方法引用实现或没有,差异,最佳实践?

我正在尝试学习

java时第一次使用LocalDate.参考将是本教程:

特别是这段代码(带有一个额外的注释行):

public static LocalDate parse(String dateString) {

try {

return DATE_FORMATTER.parse(dateString, LocalDate::from);

//return LocalDate.parse(dateString, DATE_FORMATTER);

} catch (DateTimeParseException e) {

return null;

}

}

第一个返回与教程中的相同.我并没有真正理解方法参考,这使我进行了一些互联网搜索,这使我获得了Oracle Java教程以及Java 8文档的一些阅读时间.

结果:

>我想出了//…line.两个版本都运行良好.

>我明白我根本不理解“来自” – 方法. (例如,它从哪里获取数据?)

这让我想到了我的主要问题:

这两个版本之间是否存在显着差异,导致依赖于用例的最佳实践?

如果是,这些案件会是什么?

(如果有人能够进一步解释第一个版本我会很高兴.)

任何帮助表示赞赏.

最佳答案 我还发现第二个更清楚.

我们试着解释第一个.

DateTimeFormatter将String解析为称为“TemporalAccessor”的东西,这是一个可以查询以获取各种日期和时间字段的对象.

但大多数时候你不想要TemporalAccessor.例如,您需要ZonedDateTime,LocalDate或LocalDateTime.因此,您需要一种策略将TemporalAccessor转换为您想要的类型.

这种策略称为TemporalQuery.

TemporalQuery< R>是一个功能界面,其独特的抽象方法是

R queryFrom(TemporalAccessor temporal)

因此,正如您所看到的,它确实允许将TemporalAccessor转换为其他内容.

一旦有了这样的TemporalQuery,就可以使用DateTimeFormatter中的以下方法:

public T parse(CharSequence text, TemporalQuery query)

它将首先将文本解析为TemporalAccessor,然后使用该查询将TemporalAccessor转换为其他内容.

在您的情况下,您需要LocalDate.因此,您需要TemporalQuery< LocalDate>的实现,即采用TemporalAccessor并返回LocalDate的方法. LocalDate.from(TemporalAccessor)就是这样一种方法.因此,您可以将对该方法的引用传递给parse方法并获取LocalDate(前提是从文本中获取的TemporalAccessor包含所需的日期信息).

事实上,这正是你的例子中的第二行:它的实现是:

public static LocalDate parse(CharSequence text, DateTimeFormatter formatter) {

Objects.requireNonNull(formatter, "formatter");

return formatter.parse(text, LocalDate::from);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值