[英]Weird “[]” after Java method signature
我今天查看了一些Java代碼,我發現了一些奇怪的語法:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
我認為無法編譯並想修復我認為的錯字,但后來我記得Java編譯器確實接受了它!
有人可以幫我理解這是什么意思嗎? 它是一組函數嗎?
這是一個返回int[]
。
Java語言規范 (8.4方法聲明)
為了與舊版本的Java平台兼容,允許返回數組的方法的聲明表單放置(部分或全部)在參數列表之后形成數組類型聲明的空括號對。
這是過時的生產支持:
MethodDeclarator :
MethodDeclarator []但不應在新代碼中使用。
這是一個有趣的問題。 在java中你可以說int[] a;
,以及int a[];
。
從這個角度來看,為了獲得相同的結果,只需要移動[]
並寫入public int[] get() {
。
仍然看起來代碼來自混淆器......
由於存在C標記,我將指出C和C ++中可能存在類似(但不完全相同)的表示法:
這里函數f
返回一個指向10個int數組的指針。
int tab[10];
int (*f())[10]
{
return &tab;
}
Java根本不需要星號和括號。
java的語法允許以下內容:
int[] intArr = new int[0];
並且
int intArr[] = new int[0];
來自c風格語法看起來更加陌生。
同樣,使用函數,名稱可以在[]之前或之后,並且類型仍然是int []
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.