您的位置:首页 > 编程语言 > Java开发

spring in action书中5.3节中代码错误

2017-12-20 23:30 459 查看
在spring in action(第四版)中155页,发现代码错误在编辑器中MAX_LONG_AS_STRING一直报Atrribute value must be constant的编译错误,代码如下:

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);
}


Java规则中,当有一个注解的参数期望一个原始类型(例如int)或一个字符串时,这个值必须是一个常量表达式。常量表达式是指编译器在编译时能够计算出的值,只有特定类型的操作可以在一个常量表达式中使用。Long.toString()方法是一个运行时会调用的方法,因此这会使表达式变成不是一个常量的表达式。

解决办法

private static final String MAX_LONG_AS_STRING = "" + Long.MAX_VALUE;


参考链接

Java code won’t compile due to attribute must be a constant expression error
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: