Здесь:
if(CONSTANT > 0) foo();
Вы говорите это сами.Это константа .Таким образом, с самого начала он либо больше, либо меньше 0. Таким образом, компилятор радостно превращает вышеприведенное в:
if(...x... > 0) foo();
, где x
будет фактическим значением, которое вы присвоили CONSTANT
,Так что прямо здесь, во время компиляции, это превращается в
if (true)
или, может быть, if (false)
.
Короче говоря: переосмыслите то, что вы делаете.Возможно, вам не следует сравнивать свою КОНСТАНТУ, а что-то вроде:
LocalDateTime endTime = LocalDateTime.now().plusHours(1);
, а затем, позже:
if (LocalDateTime.now().isAfter(endTime)) {
или что-то в этом роде.
Другими словамисравнивать значение константа для определения определенного условия просто не имеет смысла.Вместо этого вы можете использовать константу для вычисления некоторого «времени окончания», а затем со временем сравнить текущее время с этим «временем окончания».Особенно при использовании такого класса, как LocalDateTime , очень легко вычислить более позднюю временную метку, как показано выше.
Правка, учитывая изменение вопроса: я все еще предлагаю НЕ иметь такойпостроить в производственном коде.Вместо этого я бы рассмотрел средства, чтобы тестовая установка могла сконфигурировать производство так, чтобы эффективно отключить такой механизм тайм-аута.Например, введя таймаут, который гарантированно не будет срабатывать в течение разумного времени выполнения теста!