这是朋友问的。奇怪的是,这个java代码编译并正常运行。
int getArray() [] { ... }
我在这里遗漏了什么。不应该是
int[] getArray() { ... }
编辑: getArray()是一个返回整数数组的函数。
答案 0 :(得分:9)
为了与旧版本的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
第一次了解它时非常奇怪。 :)