我尝试使用Duration.ofMillis(Long.MAX_VALUE)在Java 8中创建最大持续时间,但出现了长整型溢出的错误。 如果存在Duration.MAX_VALUE,我该如何以编程方式获取其等效值?
编辑:长整型溢出可能是由于尝试在值上进行添加而不是在构造期间进行。对于没有可重现代码的情况表示抱歉。
简单:
Duration maxDur = ChronoUnit.FOREVER.getDuration();
看起来Duration
以秒为单位存储(最多Long.MAX_VALUE
),并且以纳秒为单位存储(最多999,999,999
)。因此,可能的最大持续时间为:
Duration d = Duration.ofSeconds(Long.MAX_VALUE, 999_999_999);
System.out.print(d)
)时,我得到以下内容:PT2562047788015215H30M7.999999999S
Long.MIN_VALUE..LONG.MAX_VALUE
。 - jhamonDuration test = Duration.ofMillis(Long.MAX_VALUE);
,但我没有遇到溢出。你能展示一下会抛出异常的代码吗? - jhamon
FOREVER("永远", Duration.ofSeconds(Long.MAX_VALUE, 999_999_999))
,并且被记录为 "... 这个单位的预估持续时间是人为定义的,即 Duration 支持的最大持续时间。" - user85421