带括号语法的Java函数定义

sma*_*c89 25 java arrays function

正在寻找源代码ByteArrayOutputStream,我看到了这个功能:

public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}
Run Code Online (Sandbox Code Playgroud)

这种语法记录在哪里?我的意思是[]在功能面前.这是否与声明一个常规数组相同,其中括号可以在数组的名称之后或之前,但在这种情况下,括号可以在函数名称之后?

String[] args;
Run Code Online (Sandbox Code Playgroud)

VS

String args[];
Run Code Online (Sandbox Code Playgroud)

编辑:2018-05-22

我在这里发现了更多这种疯狂语法的用法:你不了解Java的10件事

#3是他们提到可以利用上述语法的所有方法的地方

And*_*ner 30

JLS Sec 8.4中:

MethodDeclarator:
    Identifier ( [FormalParameterList] ) [Dims]
Run Code Online (Sandbox Code Playgroud)

...

返回数组的方法的声明允许在形式参数列表之后放置表示数组类型的一些或所有括号对.支持此语法以与早期版本的Java编程语言兼容.强烈建议不要在新代码中使用此语法.