blu*_*sky 6 java spring annotations scala
阅读@RequestMapping文档:http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/RequestMapping.html
它接受String数组参数用于其路径映射.
所以这适用于java:
@RequestMapping("MYVIEW")
Run Code Online (Sandbox Code Playgroud)
但在scala我需要使用:
@RequestMapping(Array("MYVIEW"))
Run Code Online (Sandbox Code Playgroud)
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){
}
}
Run Code Online (Sandbox Code Playgroud)
是否应该由@RequestMapping("MYVIEW")引起类似的错误?
Java SE规范的第9.7.1节规定:
如果元素类型是数组类型且相应的ElementValue不是ElementValueArrayInitializer,则其唯一元素是ElementValue表示的值的数组值与该元素相关联.否则,如果相应的ElementValue是ElementValueArrayInitializer,则ElementValueArrayInitializer表示的数组值与该元素相关联.
通过评论澄清上述说明:
换句话说,当单元素数组与数组值注释类型元素相关联时,允许省略花括号.
因为Scala没有等效的数组初始化语法,所以必须使用Array(elems).
| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |