持续时间#toDays和持续时间#toDaysPart是否多余



在Java 8中,Duration类提供了toDays方法,以与日历日无关的24小时时间块计数的形式返回总天数。

在Java 9中,Duration类获得了方便的to…Part方法:toDaysParttoHoursParttoMinutesParttoSecondsParttoMillisParttoNanosPart。我理解对时间、分钟等的需求,但我想知道toDaysPart

我的问题是:

Duration#toDaysDuration#toDaysPart会为特定的Duration对象返回不同的值吗?

在Java 11中,OpenJDK中的这几行源代码是完全相同的。

持续时间#toDays:

public long toDays() {
return seconds / SECONDS_PER_DAY;
}

持续时间#toDaysPart

public long toDaysPart(){
return seconds / SECONDS_PER_DAY;
}

从Java 16开始,没有指示哪一个被弃用或哪一个不被弃用。所以…请密切关注,这是我在这里能给你的最好建议。

这些方法不仅仅做同样的事情;他们被指定在文档中做相同的事情(在您的问题中链接(:

public long toDays()

获取此持续时间内的天数。这通过将秒数除以86400来返回持续时间中的总天数。这是基于一天24小时的标准定义。此实例是不可变的,不受此方法调用的影响。

退货:持续时间中的天数,可能是负

public long toDaysPart()

提取持续时间中的天数。这通过将秒数除以86400来返回持续时间中的总天数。这是基于一天24小时的标准定义。此实例是不可变的,不受此方法调用的影响。

退货:持续时间中的天数,可能是负

唯一的区别是单词";得到";与";提取物";在描述性摘要中。这些单词在本文中没有不同的含义,其余的单词完全相同,特别是指定方法返回内容的部分完全相同。事实上,toDaysPart的(OpenJDK(文档最近进行了更改,以澄清这些方法的作用相同。所以,是的,它们是多余的。

根据问题跟踪器上的相关问题,所有的to...Part方法都被添加在一起,并且没有任何关于toDaysPart将是冗余的事实的评论;因此,我们只能推测添加冗余方法的基本原理。

TemporalAmount(以及getSeconds()和奇怪命名的getNano()(继承的get(TemporalUnit)的目的是支持提取组合值的时间分量。Duration实际上只支持SECONDSNANOS组件访问,因为Duration只是long秒组件和int纳秒组件的组合,它们一起提供纳秒分辨率,表示大小高达2^63秒的有向值(正和负(。get_访问器返回命名组件,而to_方法返回目标单元的组合整体值。最后,如果假设Duration由每个ChronoUnit值的一个实例组成,则Duration上的to_Part方法模拟了get_方法的行为。该虚拟组件访问中的奇数是toDaysPart。我怀疑原因是,虽然小时、分钟、秒、毫秒、MICROS和NANOS可以被认为是离散的,并且在它们引用的组件方面不重叠,但当将DAYS视为组件值时,我们不清楚我们指的是星期几、月几还是一年中的某一天,这三种都是常见的约定。类似地,月和年的长度各不相同。因此,作者似乎选择了毫不含糊的方式,并考虑DAYS来表示该层次结构中最粗糙的组件。就我个人而言,我觉得这有点像狗的早餐,我想知道为什么在得出这个结论之前,这两种方法有一段时间是相同的。

最新更新