为什么持续时间课程没有' toSeconds()'方法?

时间:2017-02-18 15:36:07

标签: java java-8 api-design

我正在查看Java 8中的Duration类,并注意到它没有:

long toSeconds();

但它有所有其他toXXXXX()来获得天,小时,分钟,毫秒,纳米。我确实看到一个getSeconds()方法,它返回此持续时间对象中的秒数。还有一种get(TemporalUnit unit)方法可以将持续时间作为请求的时间单位。但为什么不保持toSeconds()方法的一致性呢?

4 个答案:

答案 0 :(得分:54)

让我们看一下docs说的话:

  

此类以秒和纳秒为单位模拟一个数量或时间量。

这基本上意味着用于存储所表示的时间量的单位是。例如,存储持续时间为5分钟和10纳秒,存储300(秒)和10(纳秒)。因此,无需将转换为秒。您使用getSeconds() 获取秒数。

看看我的意思?所有其他方法都将转换为相应的单位:天,分钟,小时...这就是为什么它们以to开头,意思是convertedTo。由于您不需要进行转换以获得持续时间(以秒为单位),因此以秒为单位返回持续时间的方法将以get开头。

答案 1 :(得分:37)

这是一个已知问题,其修复程序安排在Java 9中进行:https://bugs.openjdk.java.net/browse/JDK-8142936

Java 9中添加的新方法toSeconds。请参阅source code

/**
 * Gets the number of seconds in this duration.
 * <p>
 * This returns the total number of whole seconds in the duration.
 * <p>
 * This instance is immutable and unaffected by this method call.
 *
 * @return the whole seconds part of the length of the duration, positive or negative
 */
public long toSeconds() {
    return seconds;
}

答案 2 :(得分:4)

因为Duration

  

[...]以秒和纳秒[...]

来模拟一定数量或时间

因此它提供了两种方法

没有逻辑&#34; 到秒&#34;因为它已经 了几秒钟。

答案 3 :(得分:1)

引自http://tutorials.jenkov.com/java-date-time/duration.html

&#34;您可能会问自己是否没有toSeconds()方法。没有,因为这与持续时间的秒部分相同。您可以使用前面解释的getSeconds()方法获取持续时间的秒部分。&#34;