这是一位朋友问的。奇怪的是,这段java代码可以正常编译和运行。
int getArray() [] { ... }我是不是漏掉了什么。难道不应该是
int[] getArray() { ... }EDIT: getArray()在这里是一个返回整数数组的函数。
发布于 2012-04-09 01:58:46
来自section 8.4 of the JLS
为了与Java平台的旧版本兼容,允许在声明返回数组的方法时,将形成数组类型声明的空方括号对(部分或全部)放在正式参数列表之后。这是由以下过时的产品支持的,但不应在新代码中使用。
虽然我偶尔会看到在名称(ick)后带有数组说明符的变量声明,但我从未见过它用于这样的方法声明。真奇怪。
发布于 2012-04-09 01:58:12
声明数组的两种语法在Java语言规范的§10.2小节中是等价的:
int[] array;
int array[];Jon Skeet的回答引用了Jon Skeet的回答,同样的道理也适用于方法的返回类型,正如JSL的§8.4小节所述。
int[] getArray() { ... }
int getArray()[] { ... }发布于 2012-04-09 02:04:01
我在java的WTF特性中看到了这一点:https://stackoverflow.com/a/1998146/1247298
当你第一次了解它的时候,你会觉得很奇怪。:)
https://stackoverflow.com/questions/10065008
复制相似问题