JavaLocalDate:使用方法引用或不使用方法引用解析实现,差异,最佳实践?

JavaLocalDate:使用方法引用或不使用方法引用解析实现,差异,最佳实践?,java,Java,为了学习java,我第一次使用LocalDate。本教程将提供参考: 具体来说,这段代码(带有一个附加注释行): 第一次返回与教程中的相同。我没有真正理解方法参考,这导致我进行了一些互联网搜索,这导致我阅读了Oracle Java教程,并花了一些时间阅读了Java 8文档 结果: 我想出了//…行。两个版本都很好用 我知道我根本不理解“from”方法。(例如,它从哪里获得数据?) 这就引出了我的主要问题: 这两个版本之间是否存在导致依赖于用例的最佳实践的显著差异 如果是,这些情况是什么 (如果

为了学习java,我第一次使用LocalDate。本教程将提供参考:

具体来说,这段代码(带有一个附加注释行):

第一次返回与教程中的相同。我没有真正理解方法参考,这导致我进行了一些互联网搜索,这导致我阅读了Oracle Java教程,并花了一些时间阅读了Java 8文档

结果:

  • 我想出了//…行。两个版本都很好用
  • 我知道我根本不理解“from”方法。(例如,它从哪里获得数据?)
  • 这就引出了我的主要问题:

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

    如果是,这些情况是什么

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


    非常感谢您的帮助。

    我还发现第二个问题更清楚

    不过,让我们试着解释一下第一个

    DateTimeFormatter将一个字符串解析为一个称为“TemporalAccessor”的对象,您可以查询该对象以获取各种日期和时间字段

    但大多数时候,你并不想要一个临时助理。例如,您需要ZonedDateTime、LocalDate或LocalDateTime。因此,您需要一种策略来将临时助理转换为您想要的类型

    这种策略称为临时查询

    TemporalQuery
    是一个功能接口,其独特的抽象方法是

     R queryFrom(TemporalAccessor temporal)
    
    所以,正如你所看到的,它确实允许将一个临时接受者转换成其他的东西

    一旦有了这样一个临时查询,就可以使用DateTimeFormatter中的以下方法:

    public <T> T parse(CharSequence text, TemporalQuery<T> query)
    

    在我看来,这实际上比版本2可读性差得多。谢谢你花了这么多时间;这很有帮助!是的,我同意。使用LocalDate.parse()没有任何错误。
    public <T> T parse(CharSequence text, TemporalQuery<T> query)
    
    public static LocalDate parse(CharSequence text, DateTimeFormatter formatter) {
        Objects.requireNonNull(formatter, "formatter");
        return formatter.parse(text, LocalDate::from);
    }