【问题标题】:java 8 Duration "ofSeconds" vs "withSeconds"java 8持续时间“ofSeconds”与“withSeconds”
【发布时间】:2019-04-16 17:53:42
【问题描述】:

使用Duration.ofSeconds(2),我们将获得一个代表2秒的Duration对象。

现在,如果我有一个Duration 的实例并在其上调用方法ofSeconds,它将返回一个新的Duration 实例,其中除纳秒之外的值已被清除,并且我作为方法参数提交的值是会准备好的。

Duration.ofHours(2).withSeconds(2) 将产生一个代表 2 秒的 Duration 对象。

既然Duration 类是不可变的,那么当我可以简单地使用静态ofSeconds 时,拥有withSeconds 方法的意义何在?

【问题讨论】:

    标签: java java-8 duration java-time


    【解决方案1】:

    documentation

    这将返回具有指定秒数的持续时间,保留此持续时间的纳秒部分

    【讨论】:

    • 对。但它会删除持续时间中的所有其他信息。这不是一种误导吗?似乎该方法会用提供的值替换 Duration 的秒部分。
    • 这是低级的,不是我通常使用的方法。虽然我想将持续时间视为时间量而不关心实现,但它 实现为秒数和纳秒数,因此他们提供了一种方法,您可以在其中可以保留一个并替换另一个。我还没有想到你想要的情况,但可能会有这样的情况。
    【解决方案2】:

    withSeconds 返回一个新的不可变对象,其秒数被覆盖。其他一切都被保留。

    ofSeconds 根据秒数创建一个新的不可变对象。

    仅当您想要变异秒而不忽略更高的精度时才使用第一个。

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 2019-01-19
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2018-12-09
      相关资源
      最近更新 更多