Можно ли установить постоянное значение времени компиляции с использованием метода вызова во время выполнения? В «Весне в действии» книге, я получил этот кусок кода:Как получить строковое значение Long.MAX_VALUE во время компиляции в java?
private static final String MAX_LONG_AS_STRING = Long.toString(Long.MAX_VALUE);
@RequestMapping(method = RequestMethod.GET)
public List<Spittle> spittles(
@RequestParam(value = "max", defaultValue = MAX_LONG_AS_STRING) long max,
@RequestParam(value = "count", defaultValue = "20") int count) {
return spittleRepository.findSpittles(max, count);
}
проблема с MAX_LONG_AS_STRING, потому что DefaultValue пары должны быть строковой константой, но MAX_LONG_AS_STRING не является постоянной величиной переменной во время компиляции, есть любой возможный способ получить значение Long max как постоянное значение String? Возможно, есть что-то, что может помочь мне вызвать метод toString во время компиляции или получить это значение любым другим способом?
'private static final String MAX_LONG_AS_STRING =" 9223372036854775807 ";'? – bradimus
@bradimus это будет обходным путем. Что делать, если java будет иметь большие длины в будущих 128 - 256-битных системах? – mlecz
@mlecz Контракт на ['Long.MAX_VALUE'] (https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html#MAX_VALUE) указывает, что он возвращает' 2^63 -1'. – bradimus