2012-04-08 125 views
2

这是朋友提出的。奇怪的是,这个Java代码编译和运行正常。java中的奇怪行为

int getArray() [] { ... } 

我在这里丢失了什么。不是应该

int[] getArray() { ... } 

编辑: 的getArray()是这里的函数返回一个整数数组。

+0

的可能重复【JAVA - 变量名后括号数组(http://stackoverflow.com/questions/7521891/java-array-brackets-after-variable-name) – 2012-04-08 17:56:52

+3

@KirkWoll:这是一个不同的场景,IMO。 – 2012-04-08 18:00:07

回答

9

section 8.4 of the JLS

为了与旧版本的Java SE平台的相容性,它返回一个阵列的方法的声明被允许放置(一些或全部)的空托架对在形式参数列表之后形成数组类型的声明。这由以下废弃产品支持,但不应用于新代码。

虽然我偶尔看到变量声明的名称(益)后面的阵列符我已经从来没有看到它使用这样的方法声明。奇怪的。

2

用于声明阵列两种语法在Java当量,按Java语言规范的部分§10.2

int[] array; 
int array[]; 

同样的事情适用于一种方法的返回类型true,如每部分§8.4正如Jon Skeet的答案中所引用的JSL。

int[] getArray() { ... } 
int getArray()[] { ... } 
+1

这是一个变量 - 这是一个*方法*声明。我意识到这是变量,但这是我第一次看到它的方法。 – 2012-04-08 17:59:11