括弧構文を使用したJava関数定義 [重複] 質問する

括弧構文を使用したJava関数定義 [重複] 質問する

のソースを調べていたByteArrayOutputStreamところ、次の関数を見つけました:

public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}

この構文はどこに記載されていますか? 関数の前という意味です[]。これは、通常の配列を宣言する場合と同じですか? 通常の配列では、括弧は配列名の後ろまたは前に配置できますが、この場合は、括弧は関数名の後に配置できます。

String[] args;

String args[];

編集: 2018-05-22

この奇妙な構文のさらなる使用例をここで見つけました:Java についてあなたが知らない 10 のこと

#3は、上記の構文が悪用される可能性があるすべての方法について言及している部分です。

ベストアンサー1

JLS Sec 8.4:

MethodDeclarator:
    Identifier ( [FormalParameterList] ) [Dims]

...

配列を返すメソッドの宣言では、配列型を示す括弧のペアの一部またはすべてを、仮パラメータ リストの後に配置できます。この構文は、Java プログラミング言語の初期バージョンとの互換性のためにサポートされています。この構文を新しいコードで使用しないことを強くお勧めします。

おすすめ記事