Почему при приведении типа число не миллисекунд не урезается и пишет про переполнение long
package com.javarush.task.pro.task16.task1614;
import java.time.Instant;
/*
Конец времен
*/
public class Solution {
public static void main(String[] args) {
System.out.println(getMaxFromMilliseconds());
System.out.println(getMaxFromSeconds());
System.out.println(getMaxFromSecondsAndNanos());
}
static Instant getMaxFromMilliseconds() {
long max = (long) Instant.MAX.toEpochMilli();
return Instant.ofEpochMilli(max);
}
static Instant getMaxFromSeconds() {
return Instant.ofEpochSecond(Instant.MAX.getEpochSecond());
}
static Instant getMaxFromSecondsAndNanos() {
return Instant.ofEpochSecond(Instant.MAX.getEpochSecond(), Instant.MAX.getNano());
}
}