簡體   English   中英

Java方法簽名后奇怪的“[]”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM