正在评估其中的每个表达式(当然是在编译时;它是一个常量),
int * int而不是
long *long。结果在某个时候溢出。因此,只需
L使所有操作数文字变长即可:
interval = ((60000L * 60L) * 24L) * 30L;
当然,仅使 一些 操作数变长就可以逃脱,但是我倾向于发现仅更改所有内容会更容易。
综上所述,如果您要查找“ 30天的毫秒数”,最好使用:
long interval = TimeUnit.DAYS.toMillis(30);

正在评估其中的每个表达式(当然是在编译时;它是一个常量),
int * int而不是
long *long。结果在某个时候溢出。因此,只需
L使所有操作数文字变长即可:
interval = ((60000L * 60L) * 24L) * 30L;
当然,仅使 一些 操作数变长就可以逃脱,但是我倾向于发现仅更改所有内容会更容易。
综上所述,如果您要查找“ 30天的毫秒数”,最好使用:
long interval = TimeUnit.DAYS.toMillis(30);