调用 JDKInstant.toEpochMilli()
可能会导致算术上溢/下溢(例如Instant.MAX.toEpochMilli()
或Instant.MIN.toEpochMilli()
)。我正在寻找一种简单的方法来避免算术溢出并简单地使用Long.MAX_VALUE
. 这是我当前的代码。
long seconds, millis;
seconds = deadline.getEpochSecond();
if (seconds > Long.MAX_VALUE / 1000 - 1)
millis = Long.MAX_VALUE;
else if (seconds < Long.MIN_VALUE / 1000 + 1)
millis = Long.MIN_VALUE;
else
millis = deadline.toEpochMilli();
似乎必须有一种更清洁/更清晰的方式来实现这一点。你将如何实现这个逻辑?
我必须担心上溢/下溢,因为Instant.MAX
和Instant.MIN
被传递给此代码所在的方法。