java中的奇怪行为

时间:2012-04-08 17:55:32

标签: java return-type

这是朋友问的。奇怪的是,这个java代码编译并正常运行。

int getArray() [] { ... }

我在这里遗漏了什么。不应该是

int[] getArray() { ... }

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

3 个答案:

答案 0 :(得分:9)

来自section 8.4 of the JLS

  

为了与旧版本的Java SE平台兼容,允许返回数组的方法的声明放置(部分或全部)空括号对,这些空括号对在形式参数列表之后形成数组类型的声明。以下过时的生产支持此功能,但不应在新代码中使用。

虽然我偶尔在名称(ick)之后看到带有数组说明符的变量声明,但我从未看到它用于这样的方法声明。怪异。

答案 1 :(得分:2)

声明数组的两种语法在Java中是等效的,根据Java语言规范的§10.2部分:

int[] array;
int array[];

同样的做法适用于方法的返回类型,如JSL的§8.4部分所述,如Jon Skeet所述。

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

答案 2 :(得分:1)

我在java的WTF功能中已经看到了这一点:https://stackoverflow.com/a/1998146/1247298

第一次了解它时非常奇怪。 :)