带括号语法的 Java 函数定义

2022-09-01 19:08:54

正在源代码中查找 ,我看到了这个函数: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 编程语言的早期版本兼容。强烈建议不要在新代码中使用此语法。


答案 2