阅读@RequestMapping文档:http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/RequestMapping.html
它接受一个String数组参数用于其路径映射。
所以这可以使用java:
@RequestMapping("MYVIEW")
但在scala我需要使用:
@RequestMapping(Array("MYVIEW"))
scala版本有意义,因为注释需要String数组。但是为什么上面的java工作,如果不给出编译时错误?
下面的'ArrayChecker'类(我编写的一个类来说明这一点)导致java编译时错误:
ArrayChecker类型中的方法acceptArrayParam(String [])不是 适用于参数(String)
public class ArrayChecker {
public static void main(String args[]){
String[] strArray;
acceptArrayParam("test");
}
private static void acceptArrayParam(String[] param){
}
}
@RequestMapping(“MYVIEW”)不会导致类似的错误吗?
答案 0 :(得分:7)
Java SE规范的9.7.1部分声明:
如果元素类型是数组类型且相应的ElementValue不是ElementValueArrayInitializer,则其唯一元素是ElementValue表示的值的数组值与元素相关联。否则,如果相应的ElementValue是ElementValueArrayInitializer,则ElementValueArrayInitializer表示的数组值与该元素相关联。
通过评论澄清以上陈述:
换句话说,当单个元素数组与数组值注释类型元素相关联时,允许省略花括号。
由于Scala没有等效的数组初始值设定项语法,因此必须使用Array(elems)
。
答案 1 :(得分:0)
这是使用默认value
元素的注释的语言规范的一部分。
请参阅JLS 9.7.3以获取示例,包括注释“请注意省略花括号。”