Использование intellij 15.0.3 + Java 8u65...
lower = System.currentTimeMillis();
long upper = lower + 31536000000L; //add a year-ish
Прекрасно работает. Но если я это сделаю:
lower = System.currentTimeMillis();
long upper = lower + (1000L*60*60*24*365);
Intellij теперь дает предупреждение "Числовое переполнение в выражении". Я бы понял, действительно ли это было правдой, и он постоянно предупреждал обо всех выражениях, но это не так.
Кто-нибудь знает, почему второе выражение генерирует предупреждение? Я предпочел бы разбивку таким образом, как число, потому что другим разработчикам проще понять, что он делает (хотя, я полагаю, я мог бы прокомментировать). Код все еще компилируется, но я нахожу предупреждения в своих сборках, как зуд, который я не могу поцарапать.
ИЗМЕНИТЬ Спасибо за ответы... Я думаю, что это всего лишь проблема кэширования в Intellij... Если я знаю, что копирование/вставка выше, я не получаю предупреждение. Если я попытаюсь отредактировать его после вставки 1 или 2 раза из 10, я получу предупреждение.