是否有任何可能的方法使用運行時調用方法來設置常量編譯時間值? 在「春天行動」的書,我這一段代碼:如何在java中編譯時檢索Long.MAX_VALUE的字符串值?
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,因爲默認值PARAM必須是一個字符串常量,但MAX_LONG_AS_STRING不是一個常數編譯時間變量,有任何可能的方式來獲取Long最大值作爲一個常量字符串值? 也許有什麼可以幫助我在編譯期間調用toString方法,或以任何其他方式檢索此值?
'private static final String MAX_LONG_AS_STRING =「9223372036854775807」;'? – bradimus
@bradimus這將是解決方法。如果未來的128 - 256位系統中的java有更多的長期數據呢? – mlecz
@mlecz ['Long.MAX_VALUE'](https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html#MAX_VALUE)的合約指定它返回'2^63 -1'。 – bradimus