【发布时间】:2017-04-02 10:00:11
【问题描述】:
是否有任何可能的方法来使用运行时调用方法设置常量编译时间值? 在“Spring in Action”一书中,我得到了这段代码:
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 最大值作为常量字符串值? 也许有什么东西可以帮助我在编译期间调用 toString 方法,或者以任何其他方式检索这个值?
【问题讨论】:
-
private static final String MAX_LONG_AS_STRING = "9223372036854775807";? -
@bradimus 这将是解决方法。如果 java 在未来的 128 - 256 位系统中有更大的 long 怎么办?
-
@mlecz
Long.MAX_VALUE的合约指定它返回2^63-1。
标签: java string spring runtime compile-time