如何在 java 的编译时检索 Long.MAX_VALUE 的字符串值?

How to retrive string value of Long.MAX_VALUE in compile time in java?

有什么方法可以使用运行时调用方法来设置常量编译时值吗? 在"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 方法,或者以任何其他方式检索这个值?

您可以按照以下步骤实现:

(1) 先取最大值long MAXVALUE = Long.MAX_VALUE;

(2) 将 @RequestParam 值设置为 defaultValue = MAXVALUE+""(将 long 转换为字符串)

完整代码:

private static final long MAXVALUE = Long.MAX_VALUE;//Get the long value first

    @RequestMapping(method = RequestMethod.GET)
    public void spittles(
            @RequestParam(value = "max", defaultValue = MAXVALUE+"") long max,
            @RequestParam(value = "count", defaultValue = "20") int count) {
       // return spittleRepository.findSpittles(max, count);
    }
private static final String MAX_LONG_AS_STRING = String.valueOf(Long.MAX_VALUE);

可以做到这一点;