2012-04-08 187 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